2

我有一个 python 脚本,它驻留在远程服务器上,受版本控制,我想从我的本地 shell 执行它。

我知道当没有其他参数时,它curl https://remote.path/script.py | python会起作用(如确认here) 。

问题是,我不知道如何传递额外的命令行参数,例如python script.py arg1 arg2 arg3

我承认这可能不是最安全的做法,但脚本非常温和。

4

3 回答 3

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']
于 2013-09-27T06:02:23.970 回答
2

如果您查看手册页,您将看到该python命令采用脚本或字符-。参数而-不是脚本用于告诉 Python 命令应该从标准输入中读取脚本。因此,使用所有其他参数都知道是脚本的参数。

像这样使用

$ curl https://remote.path/script.py | python - arg1 arg2 arg3
于 2013-09-27T06:03:55.677 回答
0

很容易(并且不推荐),您可以使用 python 在 python 中捕获它们sys.argv

在文件导入系统

print sys.argv[1]

在终端

python myfile.py foo

foo

如果你这样做

print sys.argv[1:]

正如另一个回复所建议的那样,你会得到

["foo"]
于 2013-09-27T06:03:47.180 回答