无法读取文件

时间:2012-04-29 09:17:14

标签: python python-2.6

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

答案 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()添加我们想要的换行符。