我有一個是在命令行中運行這樣運行命令行參數
python program.py 100 rfile
程序如何可以寫一個新腳本,而不是隻用「100運行它'的論點,我可以連續運行它的參數列表[50,100,150,200]?
編輯:我問的原因是我想記錄'program.py'如何用不同的參數執行。
我有一個是在命令行中運行這樣運行命令行參數
python program.py 100 rfile
程序如何可以寫一個新腳本,而不是隻用「100運行它'的論點,我可以連續運行它的參數列表[50,100,150,200]?
編輯:我問的原因是我想記錄'program.py'如何用不同的參數執行。
如果你創建一個這樣
#!/bin/bash
for i in 1 2 3 4 5
do
python program.py $i rfile
done
然後在該文件上做chmod +x
一個bash文件,當你運行它,它會連續運行這些:
python program.py 1 rfile
python program.py 2 rfile
python program.py 3 rfile
python program.py 4 rfile
python program.py 5 rfile
如果將'1 2 3 4 5'更改爲'$ @',則可以在運行腳本時傳遞數字列表,例如, 'the_new_bash_script 1 2 3 4 5''。 – intuited 2010-10-15 03:47:03
實際上,將其更改爲'「$ @」',以便您可以執行'the_new_script 1 2'3 4「5' – 2010-10-15 23:29:22
您可以使用Devrim的殼的方法,也可以修改你的腳本:如果你的原始腳本像這樣工作
:
import sys
do_something(sys.argv[1], sys.argv[2])
你可以完成你想要的是這樣的:
def main(args):
for arg in args[:-1]:
do_something(arg, args[-1])
if __name__ == '__main__':
import sys
main(sys.argv[1:])
你會這樣調用它:
python program.py 50 100 150 200 rfile
我在猜你想要什麼。請澄清,如果這是不正確的。
我可能沒有解釋我想做得很好。我不想修改我最初提到的'program.py'文件。我想創建一個新的腳本,它在參數列表中多次運行'program.py'腳本,每次使用一個參數。 – Chris 2010-10-15 03:24:55
@Chris,它可能是最容易使用Devrim的shell方法。在其他python文件中調用函數很容易,但是如果program.py沒有像「main function」那樣的東西,那就不那麼容易了。你懂我的意思嗎? (您是否熟悉Python?) – 2010-10-15 03:36:19
您可以使用Optparse
它可以讓你使用你的程序,如:python yourcode.py --input input.txt --output output.txt
當你有很多控制檯參數時,這很好。
所以你的情況,你可以這樣做:
parser.add_option("-i","--input", action="store", type="int", nargs=4, dest="mylist")
現在您的控制檯,您可以鍵入python program.py -i 50 100 150 200
要訪問你可以使用MYLIST作爲一個列表輸入。
注意:從Python 2.7開始,Optparse已被棄用,並由幾乎相同的參數替換。 – notpeter 2014-02-24 00:41:39
如果你想這樣做,你的Python腳本,你可以安排它通過使用argparse
模塊(未經測試的代碼)取整數列表:
import argparse
parser = argparse.ArgumentParser()
parser.add_argument('rfile', type=argparse.FileType('r'))
parser.add_argument('numbers', nargs='+', type=int)
ns = parser.parse_args()
這類活動通常進行在Jon-Eric的main
功能explained的主持下進行。
如果調用從外殼採用
python the_script.py filename 1 2 3 4 5 6
生成的腳本,你將最終ns.file
等於文件filename
,打開讀取訪問,並ns.numbers
等於列表[1, 2, 3, 4, 5, 6]
。
是完全真棒,甚至打印出腳本和它的選項的使用信息,如果你打電話給--help
。你可以用太多的方式來定製它,只需閱讀docs即可。
是Python 2.7以上的標準庫;對於較早的蟒蛇,它可以以正常方式作爲模塊安裝,例如,通過easy_install argparse
,或通過作爲您的腳本所屬的包的依賴。
你想多個參數或單個參數是一個Python列表? – 2010-10-15 03:06:28
添加了[shell]和[shell-scripting]標籤;不知道這是OP的想法,但它似乎是對至少一些人最明顯的方法。 – intuited 2010-10-15 03:37:14