2013-01-19 46 views
1

我有一個程序,應該從命令提示符運行並作爲它的參數txt文件,然後它分析行和輸出到與程序相同的目錄文件。如果python程序的參數是目錄,我如何讀取每個文件?

但是,如果我有一個多個文件的目錄,我需要解析它將無法正常工作。它在程序的當前目錄中查找文件名,而不是在目錄中,這就是我遇到的麻煩,使程序讀取目錄中的文件。

import os, sys 

input_filenames = os.listdir(sys.argv[1]) 

for file in input_filenames: 
    parser(file) 

我對此有點難住。任何幫助都感激不盡!

+0

爲什麼你不讓殼照顧 – Blender

回答

0
import os, glob 

input_dir = sys.argv[1] 

for file in glob.glob(input_dir + "/*"): 
    parser(file) 
+0

感謝您的回覆。我得到一個typeError:只能連接列表(不是「str」)列表。 – Andros

+0

我認爲答案不需要os.listdir - 這將返回一個列表。你可以只glob.glog(sys.argv [0] +「/ *」) – theodox

+0

@ user1992110我已reedit答案 –

1

glob是遍歷目錄和使用所有文件並且只使用所需文件的簡單方法。

import os, glob 

for file in glob.glob("*.txt"): 
    parser(file) 

或者,如果你得到整個目錄使用os.listdir()列表你可以遍歷並檢查使用.endswith()字符串,例如:

input_dir = os.listdir(sys.argv[1]) 

for file in input_dir: 
    if file.endswith(".txt"): 
    parser(file) 
相關問題