为什么我不能在使用ubuntu的for python循环之后读取文件

2024-04-24 23:46:42 发布

您现在位置:Python中文网/ 问答频道 /正文

由于某些原因,在For循环之后,我无法读取输出文本文件。 例如:

for line in a:
 name = (x)
 f = open('name','w')
for line in b:
 get = (something)
 f.write(get)
for line in c:
 get2 = (something2)
 f.write(get2)

 (the below works if the above is commented out only)

f1 = open(name, 'r')
for line in f1:
 print line

如果我注释掉循环,我就可以读取文件并打印内容。你知道吗

我是一个非常新的编码和猜测这是一些明显的,我失踪了。不过我好像想不通。我用过谷歌,但我读得越多,我就越觉得自己遗漏了什么。任何建议都将不胜感激。你知道吗


Tags: thenameinforgetline原因open
1条回答
网友
1楼 · 发布于 2024-04-24 23:46:42

@伯尼在上面的评论是对的。问题是,当您执行open(..., 'w')操作时,文件被重写为空,但是Python/OS实际上不会将您write的内容写入磁盘,直到它的缓冲区被填满或者您调用close()。(这种延迟有助于加快速度,因为写入磁盘的速度很慢。)您也可以调用flush()来强制执行此操作,而不关闭文件。你知道吗

bernie提到的with语句如下所示:

 with open('name', 'w') as f:
     for line in b:
         b.write(...)
     for line in c:
         b.write(...)
 # f is closed now that we're leaving the with block
 # and any writes are actually written out to the file

 with open('name', 'r') as f:
     for line in f:
         print line

如果您使用的是python2.5,而不是2.6或2.7,则必须在文件顶部执行from __future__ import with_statement。你知道吗

相关问题 更多 >