我有一些腳本在文件上做一些處理。通常他們接受文件作爲他們的第一個命令行參數,以及之後的其他參數。通過文件迭代Python腳本
我想編寫一個主腳本,它接受要運行的腳本的名稱,指定目標文件(a-la glob
)的通配符,以及可能傳遞給輸入腳本的參數。主腳本應迭代文件,並使用其他參數運行輸入腳本。
請注意,輸入腳本是遺留的,並且可能在末尾不包含通常的if __name__ == "__main__":
行。他們也可能訪問sys.argv
。
有什麼建議嗎?
我有一些腳本在文件上做一些處理。通常他們接受文件作爲他們的第一個命令行參數,以及之後的其他參數。通過文件迭代Python腳本
我想編寫一個主腳本,它接受要運行的腳本的名稱,指定目標文件(a-la glob
)的通配符,以及可能傳遞給輸入腳本的參數。主腳本應迭代文件,並使用其他參數運行輸入腳本。
請注意,輸入腳本是遺留的,並且可能在末尾不包含通常的if __name__ == "__main__":
行。他們也可能訪問sys.argv
。
有什麼建議嗎?
你可能會嘗試這樣的事情。 (很粗糙,但你明白了)
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)
編輯:我認爲shell腳本是要走的路。但是如果你需要跨平臺,更多的可讀性和更強的處理能力,那麼你可以使用它。 – Wulfram 2012-07-25 09:19:35
os.system是一個不好的方法來做到這一點。 – 2012-07-25 13:43:42
改爲使用shell腳本。 – 2012-07-25 08:58:15
一個shell腳本,這聽起來像['xargs']的用例(http://linux.die.net/man/1/xargs)。 – 2012-07-25 09:09:47