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

时间:2013-02-05 15:30:59

标签: python read-write

我试图打开两个文件然后在第一个文件中取第一行,将其写入out文件,然后取第二个文件中的第一行并将其附加到输出文件中的同一行,由一个标签。

我试图对此进行编码,我的outfile最终成为第一个文件的全部内容,然后是第二个文件的全部内容。我包含print语句只是因为我希望在脚本运行时看到终端中发生的事情,这就是他们在那里的原因。有什么想法吗?

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 :(得分: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='')

答案 1 :(得分:0)

也许这会给你一些想法: Adding entries from multiple files in 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很多\ t text \ r \ n用几行\ r \ nendings \ r \ n']   档案2:
  [ '给\ r \ nMe的\ r \ n某些\ r \ nLove \ r \ n']