首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法读取文件

无法读取文件
EN

Stack Overflow用户
提问于 2012-04-29 17:17:14
回答 2查看 1.5K关注 0票数 0

为什么我无法读取刚才写入文本文件的内容。代码没有显示任何错误,但我无法读取我刚刚写入文档的内容。如果有人能帮我解决这个问题,那就太好了。顺便说一下,我是编程新手,如果这是一个简单的问题,请原谅我。我使用的是Python版本2.6.1

代码语言:javascript
复制
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()
EN

回答 2

Stack Overflow用户

发布于 2012-04-29 17:22:19

在执行target.read()之前,您需要执行target.seek(0)以将文件指针重置为文件的开头。

票数 3
EN

Stack Overflow用户

发布于 2012-04-29 17:54:02

值得注意的是,在"w"模式下打开会自动截断文件,因此在该模式下打开,写入文件,然后在"r"模式下打开可能会更容易。这就是说,您不必手动截断并重新查找:

代码语言:javascript
复制
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())

我也在为opening files使用the with statement。它不仅更具pythonic风格和可读性,而且可以为您处理闭包,即使发生异常也是如此。

值得注意的是,此时,它给出的输出都在一行上,因为写操作不会添加换行符,raw_input()也不会给出导致换行符继续的换行符。因此,您可能希望将它们添加到其中。我们也可以只使用一个write()命令,并将所有输入连接成一个字符串:

代码语言:javascript
复制
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()来添加我们想要的换行符。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10371015

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档