Я думаю, что самый * pythoni c способ - перемещать кусок за фрагментом, проверяя наличие ошибок между ними. Я собираюсь предположить, что файл слишком велик, чтобы целиком храниться в памяти сразу, поэтому, вероятно, лучше всего будет что-то вроде этого:
chunk_size = 2048
successful = True
with f_in = open("original.file","rb"):
chunk = f_in.read(chunk_size)#Only reads a small chunk of the old file at a time
while chunk:
try
f_out = open("new_file","ab+")
f_out.write(chunk) #Writes the small chunk to the end of the new file and
f_out.close() #then closes it so as not to run out of memory
chunk = f_in.read(chunk_size)
except OSError as e:
chunk = False
successful = False
if successful:
os.remove("original.file")
Я почти уверен, что это сработает для вас, так как вы закончили бы раньше в случае ошибки NOSP C, что означает, что у вас закончилось c пространство. Исходный файл будет удален только в том случае, если вы завершите запись (я предполагаю, что это было вашим намерением, поскольку вы хотели переместить его, а не скопировать).
Есть более простое решение - переименовать файл с помощью os.rename («старый / путь / файл.txt», «новый / путь / файл.txt»), но я не уверен на 100%, что это будет работать с смонтированным диском c на локальный диск c. Но, наверное, попробовать стоит.