Я пытаюсь скопировать содержимое одного файла в другой.
Сценарий успешно копирует содержимое в файл, но когда я пытаюсь запустить команду READ
с выходным файлом для печати вывода, он пуст.
from sys import argv
script, inputFile, outputFile = argv
inFile = open(inputFile)
inData = inFile.read()
outFile = open(outputFile, 'w+')
outFile.write(inData)
print("The new data is:\n",outFile.read())
inFile.close()
outFile.close()
Вы забыли вернуться в начало outFile
после написания. Поэтому вставка outFile.seek(0)
должна исправить ваши проблемы.
После операции write
указатель файла находится в конце файла, поэтому вам нужно сбросить его до начала. Кроме того, буферы файловой системы IO, возможно, не были очищены в этот момент (вы еще не закрыли файл)...
Простое решение: закрыть outFile и снова открыть его для чтения.
В качестве примечания: всегда убедитесь, что вы закрываете свои файлы независимо от того, что происходит, особенно при написании, иначе вы можете получить поврежденные данные. Самый простой способ - это оператор with
:
with open(...) as infile, (...) as outfile:
outfile.write(infile.read())
# at this point both files have been automagically closed
seek
- это гораздо более элегантное решение, которое закрывается и открывается, работает намного быстрее
После того, как вы закончите писать, указатель файла находится в конце файла, поэтому никаких данных нет. Переместите указатель на начало файла.