gpt4 book ai didi

python - 在python中逐行连接大量文件

转载 作者:太空宇宙 更新时间:2023-11-04 06:14:34 25 4
gpt4 key购买 nike

感谢您的关注。

我正在处理一些以数百个文本文件(1.txt、2.txt、3.txt ...)形式存在的光谱数据,它们都采用完全相同的行数格式,如下所示:为清楚起见:

1.txt:             2.txt:            3.txt:
1,5 1,4 1,7
2,8 2,9 2,14
3,10 3,2 3,5
4,13 4,17 4,9
<...> <...> <...>
4096,1 4096,7 4096,18

我试图将它们逐行连接起来,这样我就可以得到一个输出文件,例如:

5,4,7
8,9,14
10,2,5
13,17,9
<...>
1,7,18

我是 Python 的新手,非常感谢这里的一些帮助。我试过这个烂摊子:

howmanyfiles=8
output=open('output.txt','w+')
for j in range(howmanyfiles):
fp=open(str(j+1) + '.txt','r')
if j==0:
for i, line in enumerate(fp):
splitline=line.split(",")
output.write(splitline[1])
else:
output.close()
output=open('output.txt','r+')
for i, line in enumerate(fp):
splitline=line.split(",")
output.write(output.readline(i)[:-1]+","+splitline[1])
fp.close()
output.close()

我在上面的想法是,我需要将光标放回每个文件的文档开头。但这真的让我大吃一惊。

非常感谢。

-哑光

最佳答案

我认为您可以从 zip 内置函数中获得很多好处,它可以让您同时遍历所有输入文件:

from contextlib import ExitStack

num_files = 8
with open("output.txt", "w") as output, ExitStack() as stack:
files = [stack.enter_context(open("{}.txt".format(i+1)))
for i in range(num_files)]
for lines in zip(*files): # lines is a tuple with one line from each file
new_line = ",".join(line.partition(',')[2] for line in lines) + "\n"
file.write(new_line)

关于python - 在python中逐行连接大量文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16578357/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com