Python在读取具有极长行的文件时的性能

时间:2016-08-31 07:49:48

标签: python performance file

我有一个大约6MB数据的文件。所有数据都写在一行中。为什么以下命令需要超过15分钟才能完成?这是正常的吗?

infile = open('file.txt')
outfile = open('out.txt', 'w')
for line in infile.readlines():
    outfile.write(line);

详细信息:

我正在使用Python 2.7。

wc 的输出:

  • 换行计数:2
  • 字数:3475246
  • 字节数:6951140

评估1:

在文件中使用

参考代码(由Ahsanul Haque和Daewon Lee建议):

for line in infile:
    output.write(line):

时间:959.487秒。

2 个答案:

答案 0 :(得分:1)

尝试以下代码段。 readlines()加载内存上的所有数据,这似乎会导致很长时间。

infile = open('file.txt', 'r')
outfile = open('out.txt', 'w')
for line in infile:
    outfile.write(line)

在Windows 10操作系统上使用我的python 3.5(64位),以下代码片段在几秒钟内完成。

import time

start = time.time()

with open("huge_text.txt", "w") as fout:
    for i in range(1737623):
        fout.write("ABCD ")
    fout.write('\n')   
    for i in range(1737623):
        fout.write("EFGH ")
    fout.write('\n')
# end of with

infile = open('huge_text.txt', 'r')
outfile = open('out.txt', 'w')
for line in infile:
    outfile.write(line)

outfile.close()
infile.close()

end = time.time()
print("Time elapsed: ", end - start)

"""
<Output>
Time elapsed:  1.557690143585205
"""

答案 1 :(得分:0)

尝试以块的形式阅读文件

infile = open('file.txt')
outfile = open('out.txt', 'w')
while True:
    text = infile.read(100): # or any other size
    if not text:
        break
    outfile.write(line);