2015-11-01 29 views
1

我concadenating文件與此:如何在連接文件之間添加一個空的新行?

filenames = ['ch01.md', 'ch02.md', 'ch03.md', 'ch04.md', 'ch05.md'] 
with open('chall.md', 'w') as outfile: 
    for fname in filenames: 
    with open(fname) as infile: 
     outfile.write(infile.read()) 

的問題是,我結束了這一點:

## Title 1 

Text 1 
## Title 2 

Text 2 

而且我想這一點:

## Title 1 

Text 1 

## Title 2 

Text 2 

如何修改腳本,所以它呢?

回答

0

明確在infile遍歷每行和增加你寫的每一條線,outfile兩個時間換行符\n\n加入他們:

with open(fname) as infile: 
    for line in infile: 
     outfile.write(line + "\n\n") 

編輯:如果您需要後寫每個文件你可以簡單地在你處理的每個文件之後寫入新行,write()將任何字符串作爲參數並將其寫入:

with open(fname) as infile: 
     outfile.write(infile.read()) 
    outfile.write("\n\n") 
+0

用什麼編輯器中打開你的文件嗎?因爲Windows上的示例記事本不會將'\ n'識別爲換行符。 – martijnn2008

+0

哦,不。它的工作,但它在每一段後添加一條新的線。 – alexchenco

+0

是的,因爲你不應該遍歷文件中的每一行。只要執行'outfile.write(infile.read()+「\ n \ n」)''。 – martijnn2008

2

而是每行之後寫的(如季米特里斯·吉姆建議)每個文件後寫:

with open('chall.md', 'w') as outfile: 
    for fname in filenames: 
    with open(fname) as infile: 
     outfile.write(infile.read()) 
    outfile.write("\n\n") 
+0

嘿它有效,但由於某種原因,每個'## Title'前面有兩個空格。 – alexchenco

+0

@alexchenco嗯......你可能想要在寫每行時調用'.strip()';聽起來像文件本身有一些額外的空間。 –

相關問題