我正在尝试进行文件操作。我想做的是从文件中删除一个字节,然后将文件的其余部分移动这么多字节到被删除的位置。我有这个代码:
f = open("file.txt", "r+b")
mm = mmap.mmap(f.fileno(), 0)
s=""
for i in range(10 - len(arg_list[0])) :
s+="\0"
s+=arg_list[0]
index = 0
while mm[:10]:
current_type_name = mm[:10].decode()
if current_type_name == s:
f.seek(110*index)
f.truncate()
f.write(mm[110*(index+1):])
else:
mm = mm[110:]
index += 1
除了 f.truncate() 函数外,一切正常。我已经尝试过 f.truncate(n) ,其中 n 是一个整数,但下面仍然出现错误。
错误:
File "main.py", line 109, in delete_type
f.truncate()
OSError: [Errno 22] Invalid argument
我已经搜索了导致此问题的原因,有人说它与文件路径或文件不存在有关。但我 %100% 确定我正在通过控制台以相同的路径运行文件,并且文件已经存在。我也尝试过使用 \ 和 r"" 方式的绝对路径。但我仍然遇到同样的错误。
还有一件事,当我尝试注释 f.truncate() 并重新排列 while 循环以不陷入无限循环时,代码正在运行。而且我在另一个函数中使用代码结构,令人惊讶的是它不会出错。