Невозможно прочитать файл

Почему я не могу прочитать то, что я только что написал в текстовый файл. Код не показывает никаких ошибок, но я не могу прочитать то, что я только что написал в документ. Если бы кто-то мог помочь мне понять это, было бы здорово. Кстати, я новичок в программировании, так что прости меня, если это простая проблема. Я использую 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() добавить в новые строки, которые мы хотели.

Другие вопросы по тегам