0

2 つのファイルを開いて、最初のファイルの最初の行を出力ファイルに書き込み、2 番目のファイルの最初の行を出力ファイルの同じ行にタブで区切って追加しようとしています。

これをコーディングしようとしましたが、出力ファイルは最初のファイルの内容全体になり、その後に 2 番目のファイルの内容全体が続きます。スクリプトの実行中にターミナルで何かが起こっているのを見たいという理由だけで、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()
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')

2 つのファイルの行数が同じでない場合 (またはそれらがREALLY BIGの場合)、次を使用できます。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

私の出力例のスペースは [タブ] です。注: 明らかな理由から、ファイルに行末が追加されていません。

これが機能するには、ファイル 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:
[「これは\ta 大量の\t テキストです\r\n数行の末尾\r\n\r\n」]
ファイル 2:
['Give\r\nMe\r\nSome\r\nLove\ r\n']

于 2013-02-05T15:32:13.613 に答える