2013-02-23 91 views
0

我想將100個不同的文件合併爲一個文件。與數據文件的使用python加入單獨的文件

實施例:

example1.txt具有以下格式:

something 
    something 
    somehting 

example2.txt具有以下格式:

something 
something 
somehting 

和所有的100個文件有相同格式的數據,並且還有一個通用名稱example1 ..... example100這意味着該示例是相同的並且有一個數字。

from itertools import chain 


infiles = [open('{}_example.txt'.format(i+1), 'r') for i in xrange(113)] 
with open('example.txt', 'w') as fout: 
     for lines in chain(*infiles): 
      fout.write(lines) 

我用這一點,但問題是下一個文件的第一行與上次以前的文件中加入

+0

我會使用'貓'或'gawk',即使在窗戶上。 – newtover 2013-02-23 20:03:10

+0

在* nix:'粘貼示例* .txt>加入'。 'paste'工具也是Windows的cygwin的一部分。 – 2013-02-23 22:08:23

回答

2

如果你有100個文件,最好只使用文件的數組:

infiles = [open('example{}.txt'.format(i+1), 'r') for i in xrange(100)] 
with open('Join.txt', 'w') as fout: 
    for lines in izip_longest(*infiles, fillvalue=''): 
     lines = [line.rstrip('\n') for line in lines] 
     print >> fout, separator.join(lines) 
+0

感謝您的回答我也有文件名1_example_in它是相同的數字只有chage我試過infiles = [開放('{} _ example_in.txt'.format(i + 1),'r')爲我在xrange(100)],但Join.txt文件不包含任何內容。 – 2013-02-23 20:07:32

+0

@HelenFirstrofen:將最後一行改爲'print >> outf,separator.join(lines)'。你也可能想在循環後關閉所有的'infiles'。 – martineau 2013-02-23 20:33:25

0

我會打開一個新的文件寫:通過你想要的文件與一系列join.txt,然後環(1100):

join = open('Join.txt','w') 
for file in range(1,100): 
    file = open('example'+file+'.txt','r') 
    file = file.readlines() 
    for line in file: 
    join.write(line) 
+0

OP希望將每個文件中每行的數據連接在輸出文件的相應行上。 – martineau 2013-02-23 20:22:00

+0

我真的不明白他的問題@馬蒂諾 – bozdoz 2013-02-23 20:28:38

+0

是的,這是誤導。看看她給她的問題添加的鏈接。 – martineau 2013-02-23 20:30:10

相關問題