从两个文件中取出行,输出到同一行 - python

0 投票
2 回答
4133 浏览
提问于 2025-04-17 14:50

我想打开两个文件,然后把第一个文件的第一行写入一个输出文件,再把第二个文件的第一行加到输出文件的同一行,两个内容之间用一个制表符隔开。

我尝试写了代码,但我的输出文件最后变成了第一个文件的所有内容,然后是第二个文件的所有内容。我加了打印语句,只是想在脚本运行时看到一些输出,这就是为什么会有这些打印语句。有没有什么建议?

import sys


InFileName = sys.argv[1]                 

InFile = open(InFileName, 'r') 

InFileName2 = sys.argv[2]

InFile2 = open(InFileName2, 'r')

OutFileName = "combined_data.txt"

OutFile = open(OutFileName, 'a')

for line in InFile:
    OutFile.write(str(line) + '\t')
    print line
    for line2 in InFile2:
        OutFile.write(str(line2) + '\n')
        print line  

InFile.close()
InFile2.close()
OutFile.close()

2 个回答

0

也许这能给你一些灵感:

在Python中从多个文件添加条目

o = open('output.txt', 'wb')

fh = open('input.txt', 'rb')
fh2 = open('input2.txt', 'rb')

for line in fh.readlines():
    o.write(line.strip('\r\n') + '\t' + fh2.readline().strip('\r\n') + '\n')

## If you want to write remaining files from input2.txt:
# for line in fh2.readlines():
#     o.write(line.rstrip('\r\n') + '\n')

fh.close()
fh2.close()
o.close()

这样做会得到:

line1_of_file_1        line1_of_file_2
line2_of_file_1        line2_of_file_2
line3_of_file_1        line3_of_file_2
line4_of_file_1        line4_of_file_2

在我输出的例子中,空格是一个 [tab]。
注意:文件中没有添加行结束符,这是显而易见的原因。

为了让这个工作正常,文件1和文件2中的行结束符需要是正确的。
要检查这一点,可以使用:

print 'File 1:'
f = open('input.txt', 'rb')
print [r.read[:200]]
f.close()

print 'File 2:'
f = open('input2.txt', 'rb')
print [r.read[:200]]
f.close()

这应该会给你类似这样的结果:

文件1:
['这是一堆\t文本\r\n还有一些行\r\n结束符\r\n']
文件2:
['给我\r\n一些\r\n爱\r\n']

4

你可以使用 zip 来实现这个功能:

with open(file1) as f1,open(file2) as f2,open("combined_data.txt","w") as fout:
     for t in zip(f1,f2):
         fout.write('\t'.join(x.strip() for x in t)+'\n')

如果你的两个文件行数不一样(或者它们特别大),你可以使用 itertools.izip_longest(f1,f2,fillvalue='')

撰写回答