最近跑實驗,遇到了一個問題:由於實驗數據集比較多,每次跑完一個數據集就需要手動更改文件路徑,再將文件傳到服務器,再運行實驗,這樣的話效率很低,必須要專門看着這個實驗,啥時候跑完就手動修改運行下一個實驗。我個人無法忍受這樣低效率,就想能不能有什么解決的辦法。
我們期望的解決辦法是通過命令行傳參來解決這個問題,因為接下來是需要編寫shell腳本來批量運行實驗,如果用輸入語句的方式顯得太笨拙。
在編寫實驗代碼的時候,我將所有的參數集中到一個py文件中,這樣便於后期的維護,現在的問題就是需要通過命令行傳參的方式改變該文件中的某些值。
關於傳參,python中提供了argparse這一模塊。通過這個模塊 就能很快的實現命令行傳參的功能。
下面舉個例子:
文件test1.py
import argparse from argparse import RawTextHelpFormatter parse = argparse.ArgumentParser(description="The parameters for the feature select method", formatter_class=RawTextHelpFormatter) parse.add_argument('name', type = str) args = parse.parse_args() name = args.name
文件test3.py
import test1 str = test1.name + 'asdasdasd'
文件test2.py
import test3 print test3.str
運行:
我們可以通過改變命令行的參數來改變這個name的值,其實關於這一點也比較好理解,我們可以想成python將這三份代碼拼接在一起,再一起執行。這樣就實現了我剛才想要的功能。