2016-11-25 80 views
0

目前,我讀了一些文本文件,像這樣寫使用fileinput一些CSV行:如何判斷python文件的開始?

out_file= open('f.csv', 'wb') 
csv_w = csv.writer(out_file, delimiter="\t", encoding='utf-8' ) 
os.chdir(sys.argv[1]) 
for line in fileinput.input(glob.glob("*.txt")): 
    csv_w.writerow('something') 

這工作得很好,但我想寫信給單獨的輸出文件。目前循環讀取一個文件,然後繼續下一個,只是寫入一個大的csv文件。

我如何判斷當前正在讀取的輸入文件是不同的(即,我已達到前一個文件的EOF,現在是新的BOF)?我可以存儲文件名並在每次閱讀新行時檢查它,但我想Python有一些巧妙的功能。 TIA!

+0

您可以爲每個輸入文件創建新的csv.writer(和新的csv文件)。 –

回答

0

使用fileinput.filename告訴正在架設到文件的名稱:

#!/usr/bin/env python 

import fileinput 
import glob 
for line in fileinput.input(glob.glob('*')): 
    print(fileinput.filename()) 
's.txt' 
't.txt' 

如果「文件」,其實是一個目錄,則會失敗。因此,以最好的IETAFFTFP方式:

import fileinput 
import glob 
for line in fileinput.input(glob.glob('*')): 
    try: 
     print(fileinput.filename()) 
    except IsADirectoryError as e: 
     print(e) 
+0

謝謝塞巴斯蒂安。除了檢查舊值以外,是否有任何方法可以判斷它是否發生了變化? – schoon