2013-09-27 142 views
2

我有一個駐留在遠程服務器上的版本控制下的python腳本,我想從我的本地shell執行它。在本地執行一個遠程python腳本,其他參數

我知道curl https://remote.path/script.py | python將工作(as confirmed here)時,有沒有更多的參數。

的問題是,我無法弄清楚如何在額外的命令行參數傳遞,如python script.py arg1 arg2 arg3

我認出這是可能不是最安全的做法,但劇本是相當良性

+0

您使用'argparse'或'optparse'什麼樣的? – Greg

回答

2

如果檢查manual page,你會看到python命令採用無論是腳本還是字符-。參數-而不是腳本用於告訴Python命令腳本應該從標準輸入讀取。因此,使用所有其他參數都被認爲是腳本的參數。

使用

$ curl https://remote.path/script.py | python - arg1 arg2 arg3 
2

man python會回答你的問題。

python [ -B ] [ -d ] [ -E ] [ -h ] [ -i ] [ -m module-name ] 
      [ -O ] [ -OO ] [ -R ] [ -Q argument ] [ -s ] [ -S ] [ -t ] [ -u 
    ] 
      [ -v ] [ -V ] [ -W argument ] [ -x ] [ -3 ] [ -? ] 
      [ -c command | script | - ] [ arguments ] 

說:

curl https://remote.path/script.py | python - arg1 arg2 arg3 

例子:

$ cat s 
import sys 
print sys.argv[1:] 
$ cat s | python - arg1 arg2 arg3 
['arg1', 'arg2', 'arg3'] 
0

很容易(不推薦),你可以使用sys.argv

在文件 進口SYS

正好趕上他們在Python
print sys.argv[1] 

在終端

python myfile.py foo 

foo 

如果你

print sys.argv[1:] 

至於另一響應建議,你會得到

["foo"] 
相關問題