Python 写很多行的有效方法?

Python 写很多行的有效方法?,python,Python,我有一个txt文件,大约20000行。我必须处理每一行并做一些处理,比如替换一些特殊的字符串,然后将内容写入一个新的txt。 现在,我的处理方法是将内容保存到一个列表,即原始列表。处理后,我会得到一个新的列表。 写入文件: with open('new.txt','w') as f1, for eachline in process_list: f1.write(eachline) 我认为将每一行写入文件是一种非常缓慢的方式。所以我想知道有效的方法。比如每次写5000行?我

我有一个txt文件,大约20000行。我必须处理每一行并做一些处理,比如替换一些特殊的字符串,然后将内容写入一个新的txt。 现在,我的处理方法是将内容保存到一个列表,即原始列表。处理后,我会得到一个新的列表。 写入文件:

with open('new.txt','w') as f1,
   for eachline in process_list:
       f1.write(eachline)

我认为将每一行写入文件是一种非常缓慢的方式。所以我想知道有效的方法。比如每次写5000行?我想是吧

这样做的典型方式如下:

with open('inFile.txt') as fIn:
    with open('outFile.txt', 'w') as fOut:
        for line in fIn:
            fOut.write(process(line))

这将创建一个迭代器,速度很快,被认为是最佳实践。你在做块式手术吗?看起来您正在执行上述操作就足够了

你为什么认为这很慢?该文件只打开一次,并且具有缓冲输出,因此您无法控制写入磁盘的时间。我只是猜测,将每行写入文件时调用I/O将消耗更多内存。我的朋友建议我每次写入5000行。@EvanZhang除非您已经遇到速度问题,否则无需预先优化“我认为这是一种非常缓慢的方式”-为什么?对于您的目的来说,它是不是太慢了?在这一点上,您对它进行了测试,并确定这段代码是问题所在?我认为这个迭代器很好。我不需要创建列表,我可以在迭代器中执行行操作。处理完整行之后,使用“/n”连接每条线,每次写入5000行,如str_output='line1\n'+'line2\n+..'line5000\n'。然后将这个很长的字符串写入文件。效率高吗?我不这么认为。我没有任何数据来支持这一点,但是当您使用迭代器时,Python的典型实现会在后台自动为您实现这一点。