我是一个 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/