Я пытаюсь сделать манипуляцию с файлом. Что я хочу сделать, это удалить часть байта из файла и переместить остальную часть файла на столько байтов в место удаленной части. У меня есть этот код:
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
Я искал причины этого, некоторые говорят, что это связанный с filepath или файл не существует. Но я на 100% уверен, что запускаю файл через консоль по тому же пути, и файл уже существует. Также я пробовал абсолютный путь как с \, так и с r "" способами. Но все же я получил ту же ошибку.
Еще одна вещь, когда я попытался прокомментировать функцию f.truncate () и переставить l oop, чтобы она не падала бесконечно l oop, код работает. Кроме того, я использую структуры кода в других функциях, что удивительно: ошибка не возникает.