0

为什么我无法读取我刚刚写入文本文件的内容。该代码没有显示任何错误,但我无法阅读我刚刚写入文档的内容。如果有人可以帮助我解决这个问题,那就太好了。顺便说一句,我是编程新手,如果这是一个简单的问题,请原谅我。我使用的是 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()
4

2 回答 2

3

您需要target.seek(0)先将文件指针重置为文件的开头,然后再执行target.read().

于 2012-04-29T09:22:18.797 回答
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())

我也在使用打开文件with语句。它不仅更具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))

在这里,我使用列表推导来构建输入行的列表。这意味着我们不必写出line_x = raw_input(prompt)大量的时间,并且我们可以轻松地更改要使用的行数。这也意味着我们可以轻松str.join()地添加我们想要的换行符。

于 2012-04-29T09:54:01.577 回答