我有一个 python 脚本,它驻留在远程服务器上,受版本控制,我想从我的本地 shell 执行它。
我知道当没有其他参数时,它curl https://remote.path/script.py | python
会起作用(如确认here) 。
问题是,我不知道如何传递额外的命令行参数,例如python script.py arg1 arg2 arg3
?
我承认这可能不是最安全的做法,但脚本非常温和。
我有一个 python 脚本,它驻留在远程服务器上,受版本控制,我想从我的本地 shell 执行它。
我知道当没有其他参数时,它curl https://remote.path/script.py | python
会起作用(如确认here) 。
问题是,我不知道如何传递额外的命令行参数,例如python script.py arg1 arg2 arg3
?
我承认这可能不是最安全的做法,但脚本非常温和。
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']
如果您查看手册页,您将看到该python
命令采用脚本或字符-
。参数而-
不是脚本用于告诉 Python 命令应该从标准输入中读取脚本。因此,使用所有其他参数都知道是脚本的参数。
像这样使用
$ curl https://remote.path/script.py | python - arg1 arg2 arg3
很容易(并且不推荐),您可以使用 python 在 python 中捕获它们sys.argv
在文件导入系统
print sys.argv[1]
在终端
python myfile.py foo
foo
如果你这样做
print sys.argv[1:]
正如另一个回复所建议的那样,你会得到
["foo"]