在Python中的两个diffrent.txt文件中求和



我目前正在尝试将两个彼此价值超过3500万的.txt文件相加,并将结果放入第三个文件中。

文件1:

2694.28
2694.62
2694.84
2695.17

文件2:

1.483429484776452
2.2403221757269196
1.101004844694236
1.6119626937837102

文件3:

2695.76343
2696.86032
2695.941
2696.78196

有没有办法用python做这件事?

您可以使用numpy来提高速度。它将比纯python快得多。Numpy的很多操作都使用C/C++。

import numpy
import os
path = os.path.dirname(os.path.realpath(__file__))
file_name_1 = path + '/values_1.txt'
file_name_2 = path + '/values_2.txt'
a = numpy.loadtxt(file_name_1, dtype=float)
b = numpy.loadtxt(file_name_2, dtype=float)
c = a + b
precision = 10
numpy.savetxt(path + '/sum.txt', c, fmt=f'%-.{precision}f')

这假设您的.txt文件位于python脚本所在的位置。

您可以使用pandas.read_csv读取、求和,然后写入文件块
大概所有3500万条记录都不会留在内存中。你需要按块读取文件。通过这种方式,您一次读取一个块,然后只将一个块加载到内存中(2个块实际上一个用于文件1,一个用于file2(,求和并在文件3的附加模式下一次写入一个块。

在这个伪例子中,我把chunksize设置为2,因为对4长的输入进行测试。这取决于你正在使用的服务器,做一些测试,看看你的问题的最佳大小是什么(50k、100k、500k、1k等(。

import pandas as pd
chunksize = 2
with pd.read_csv("file1.txt", chunksize=chunksize, header=None) as reader1, pd.read_csv("file2.txt", chunksize=chunksize, header=None) as reader2:
for chunk1, chunk2 in zip(reader1, reader2):
(chunk1 + chunk2).to_csv("file3.txt", index=False, header=False, mode='a')

最新更新