2012-07-25 165 views
0

我有一些腳本在文件上做一些處理。通常他們接受文件作爲他們的第一個命令行參數,以及之後的其他參數。通過文件迭代Python腳本

我想編寫一個主腳本,它接受要運行的腳本的名稱,指定目標文件(a-la glob)的通配符,以及可能傳遞給輸入腳本的參數。主腳本應迭代文件,並使用其他參數運行輸入腳本。

請注意,輸入腳本是遺留的,並且可能在末尾不包含通常的if __name__ == "__main__":行。他們也可能訪問sys.argv

有什麼建議嗎?

+1

改爲使用shell腳本。 – 2012-07-25 08:58:15

+1

一個shell腳本,這聽起來像['xargs']的用例(http://linux.die.net/man/1/xargs)。 – 2012-07-25 09:09:47

回答

0

import glob

應該讓你開始,

我也子過程中的腳本,並通過他們的論點。

+0

檢查glob。在這種情況下如何使用子進程? – bavaza 2012-07-25 12:44:00

0

你可能會嘗試這樣的事情。 (很粗糙,但你明白了)

import os 
import sys 

def callScripts(wildcard, arguments): 
    # convert a list ["hello", "world"] to a space delimited "hello world" 
    arguments = " ".join(arguments) 
    for file in os.listdir(".") 
    # feel free to replace with regex or w/e 
    if file.endswith(wildcard) 
     # system shell call 
     os.system("python " + file + " " + arguments) 

if __name__ == "__main__": 
    wildcard = sys.argv[1] 
    arguments = sys.argv[2:] 
    callScripts(wildcard, arguments) 
+0

編輯:我認爲shell腳本是要走的路。但是如果你需要跨平臺,更多的可讀性和更強的處理能力,那麼你可以使用它。 – Wulfram 2012-07-25 09:19:35

+0

os.system是一個不好的方法來做到這一點。 – 2012-07-25 13:43:42