Невозможно прочитать файл
Почему я не могу прочитать то, что я только что написал в текстовый файл. Код не показывает никаких ошибок, но я не могу прочитать то, что я только что написал в документ. Если бы кто-то мог помочь мне понять это, было бы здорово. Кстати, я новичок в программировании, так что прости меня, если это простая проблема. Я использую Python версии 2.6.1
from sys import argv
script,file_name = argv
prompt = "> "
target = open(file_name, 'w+b')
print "press CRTL-C enter to escape this"
print "or press RETURN to continue"
raw_input(prompt)
print "Begin erasing stuff Goodbye!"
target.truncate()
print "we are going to start writing to file"
write_1 = raw_input(prompt)
write_2 = raw_input(prompt)
write_3 = raw_input(prompt)
target.write(write_1)
target.write(write_2)
target.write(write_3)
print target.read()
print "closing now!"
target.close()
2 ответа
Вам нужно сделать target.seek(0)
сбросить указатель файла на начало файла перед выполнением target.read()
,
Стоит отметить, что открытие в "w"
режим усекает файл автоматически, поэтому в этом режиме его легче открыть, записать в файл и открыть в "r"
Режим. Это было то, что вы избегаете необходимости усекать вручную и искать обратно:
from sys import argv
script, file_name = argv
prompt = "> "
print("Press CTRL+C to exit,")
print("or press RETURN to continue.")
raw_input(prompt)
print("Begin erasing.")
with open(file_name, 'wb') as target:
print("Begin writing to file.")
write_1 = raw_input(prompt)
write_2 = raw_input(prompt)
write_3 = raw_input(prompt)
target.write(write_1)
target.write(write_2)
target.write(write_3)
with open(file_name, "rb") as target:
print(target.read())
Я также использую with
заявление на открытие файлов. Она не только более питонна и удобочитаема, но и закрывает вас даже при возникновении исключений.
Стоит отметить, что в данный момент это дает вам вывод, который находится на одной строке, так как записи не добавляют новую строку, и raw_input()
не дает вам новую строку, которая заставила его продолжить. Таким образом, вы, вероятно, хотите добавить их. Мы также можем просто использовать один write()
Команды с единственной строкой, объединенной из всех наших входных данных:
print("we are going to start writing to file")
data = [raw_input(prompt) for _ in range(3)]
target.write("\n".join(data))
Здесь я использую понимание списка, чтобы создать список строк ввода. Это означает, что нам не нужно выписывать line_x = raw_input(prompt)
много раз, и мы можем легко изменить количество строк, которые мы хотим использовать. Это также означает, что мы можем легко использовать str.join()
добавить в новые строки, которые мы хотели.