0

我试图打开两个文件,然后取第一个文件中的第一行,将其写入输出文件,然后取第二个文件中的第一行并将其附加到输出文件中的同一行,用制表符分隔。

我试图对此进行编码,而我的 outfile 最终成为第一个文件的全部内容,然后是第二个文件的全部内容。我包含打印语句只是因为我想在脚本运行时看到终端中发生的事情,这就是它们存在的原因。有任何想法吗?

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()
4

2 回答 2

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='')

于 2013-02-05T15:32:35.850 回答
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:
['This is\ta lot of\t text\r\nWith a few line\r\nendings\r\n']
文件 2:
['Give\r\nMe\r\nSome\r\nLove\ r\n']

于 2013-02-05T15:32:13.613 回答