为什么我不能阅读我刚刚写入文本文件的内容。代码没有显示任何错误,但我无法读取我刚刚写入文档的内容。如果有人可以帮我解决这个问题,那就太好了。我是编程的新手,请原谅我,如果这是一个简单的问题。我使用的是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()
答案 0 :(得分:3)
在执行target.seek(0)
之前,您需要执行target.read()
将文件指针重置为文件的开头。
答案 1 :(得分:2)
值得注意的是,以"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())
我也在the with
statement使用opening files。它不仅具有更多的pythonic和可读性,而且可以处理关闭,即使发生异常时也是如此。
值得注意的是,目前,这会为您提供全部在一行上的输出,因为写入不会添加换行符,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))
在这里,我使用a list comprehension建立输入行列表。这意味着我们不必多次写出line_x = raw_input(prompt)
,我们可以轻松更改我们想要使用的行数。这也意味着我们可以轻松地使用str.join()
添加我们想要的换行符。