我是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行!即使最后一行也写了一部分!!! 我错过什么了吗?你知道吗
谢谢
您需要用python文件对象上的
flush()
方法刷新输出缓冲区。你知道吗另外,如果您想确定缓冲区的所有内容都是真的写在硬盘上的(或者其他什么),您必须使用系统调用
os.fsync()
file对象上的
'close()
方法通常会刷新缓冲区。但我觉得知道它是怎么工作的很好。你知道吗那个
应该是
否则这是一个不操作,不关闭文件。如果文件没有关闭,写入缓冲区直到稍后才会刷新,或者根本不会刷新(取决于脚本终止的方式)。你知道吗
为了避免显式关闭文件,可以使用^{} statement :
即使
for
循环引发异常,也可以关闭文件。你知道吗相关问题 更多 >
编程相关推荐