python - 写操作部分完成

标签 python python-idle

我是一个 python 新手,这是我从文件中的文本行中提取一些数字的代码:

i = 0
path = '/home/vahid/git/simmobility/dev/Basic/pathset/'
output = open(path + 'noTTSectionResult.txt', 'w')
for row in open(path + 'heoutput.txt', 'r'):
    if row.find('error: getTravelTimeBySegId') == -1 :
        continue
    words = row.split(':')
    word = words[3]
    word = word[1:]
    word = word[:-3]
    output.write(str(i) + ':' +word + '\n')
    i = i+1
print i
output.close

在控制台上打印的最终输出是 999(我什至在控制台上打印了结果以确保)但是写入输出文件的行数少于 754 行!连最后一行都写了一部分!!! 我错过了什么吗?

谢谢

最佳答案

output.close

应该是

output.close()

否则它是空操作并且不会关闭文件。如果文件没有关闭,写入缓冲区直到稍后才会刷新,或者根本不会刷新(取决于脚本的终止方式)。

为避免必须显式关闭文件,您可以使用 with statement :

with open(path + 'noTTSectionResult.txt', 'w') as output:
   for row in open(path + 'heoutput.txt', 'r'):
      ...
      output.write(...)
      ...
# no need to explicitly close `output'

即使 for 循环引发异常,这还有关闭文件的额外优势。

关于python - 写操作部分完成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23906859/

相关文章:

Python turtle 程序在 IDLE 下工作,否则不工作

python - Windows 上 Python 3.4 IDLE 调试器中的对象检查

python - 如何从重叠的形状中获取输出? Python 3.5 Tkinter

python - 如何将 django-avatar 与我自己的用户模型一起使用,而不是与 django.contrib.auth.models.User 一起使用

python - 使用pyqtgraph使用外部数据进行绘图

python - Ubuntu 上的 Spyder 3 (Anaconda) - 如何将工作目录更改为终端的工作目录

python - 在Python中从列表中找到最佳组合后如何从数据集中删除一行

python - 使用 Pandas 选择每个 groupby 组的列的最大 N

Python IDLE 卡住

python - 如何在 Python IDLE 中使用 Numpy?