2015-12-02 22 views
0

我想從兩個不同的文件中寫入兩個不同的文件在同一行 一個不同的文件(即有3個正在使用的文件,已經有2個文件和一個新的)在同一行上間隔兩個東西然後寫入文件

fin=open("/Users/battledrum/Desktop/review2.txt") 
fin1=open("/Users/battledrum/Desktop/review3.txt") 

fout=open("/Users/battledrum/Desktop/HeightVStime.txt","w") 

a=list() 

for i in range(35): 
     fout.write(fin.read()+'\t'+fin1.read()) 


print(len(a)) 

這是我想在新文件中看到的結果:

1.34,1.54

1.80,1.39

1.25,1.68

1.69,1.83

+0

*爲什麼所有CAPS * – Raptor

+0

@Raptor我剛換它降低的情況下 – BattleDrum

+0

下面是一個類似的帖子:http://stackoverflow.com/questions/17749058/combine-multiple-text-files-into-one-text-file-using-python希望這會有所幫助。 – ConstantinM

回答

1

很多事情不對的:

  • file.read()獲取文件的全部內容,所以你寫(整個第一檔) +選項卡+(整個第二個文件),您要逐行閱讀。

  • 你永遠不會附加到a,所以len(a)將始終爲0

  • 這是不完全清楚自己想要的是什麼a - 行由行文件內容?

我想你想要的東西更像

HEIGHT_FILE = "/Users/battledrum/Desktop/review2.txt" 
TIME_FILE = "/Users/battledrum/Desktop/review3.txt" 
OUTPUT_FILE = "/Users/battledrum/Desktop/HeightVStime.txt" 

def main(): 
    # load data pairs 
    with open(HEIGHT_FILE) as hf, open(TIME_FILE) as tf: 
     hts = [(height.strip(), time.strip()) for height,time in zip(hf, tf)] 
    # write output 
    with open(OUTPUT_FILE, "w") as outf: 
     lines = ("{}\t{}".format(h, t) for h,t in hts) 
     outf.write("\n".join(lines)) 
    print("{} lines written".format(len(hts))) 

if __name__=="__main__": 
    main() 
0

,而不是假設一定數量的每個文件中的行,怎麼是這樣的:

with open("/Users/battledrum/Desktop/HeightVStime.txt","w") as fout: 
    with open("/Users/battledrum/Desktop/review2.txt") as fin1: 
     with open("/Users/battledrum/Desktop/review3.txt") as fin2: 
      fout.writelines([(', '.join((x.rstrip('\n'),y))) for x,y in zip(fin1,fin2)]) 

zipfin1fin2之間的結合線,因爲我們可以將每個文件對象視爲一個迭代對象,如果其中一個文件長於另一個文件,則會丟棄剩餘的行。

0

假設文件是​​相同的長度

with open(fin) as f1: 
    with open(fin1) as f2: 
     num1 = [l.strip() for l in f1.readlines()] 
     num2 = [l.strip() for l in f2.readlines()] 


with open(fout,'w+') as out: 
    for i in range(0,len(num1)): 
     out.write(','.join([num1[i], num2[i]])+'\n') 
相關問題