Linux下无文件传递参数启动Python Shell是否可行?
在Linux下无需文件向Python交互式Shell传递参数
当然可以!不用创建文件、修改权限,也不用在代码里硬写sys.argv,你可以通过以下几种方式在启动Python交互式Shell时直接传入参数:
方法1:结合-c选项启动交互式Shell并传递参数
这是最贴合你需求的方式——在命令行直接传入参数,启动后自动进入带参数的交互式环境:
python -c 'import sys, code; sys.argv = sys.argv[1:]; code.interact(local=globals())' arg1 arg2 arg3
进入Shell后,直接验证参数是否生效:
>>> import sys >>> print(sys.argv) ['arg1', 'arg2', 'arg3']
这里的sys.argv = sys.argv[1:]是为了去掉-c这个默认参数,只保留你自定义的内容。如果不需要过滤,也可以省略这行,此时sys.argv会显示为['-c', 'arg1', 'arg2', 'arg3']。
方法2:利用环境变量间接传递参数
如果你能接受稍微灵活的格式,也可以通过环境变量传递,无需修改任何文件:
export PYTHON_ARGS="arg1 arg2 arg3" && python
进入Shell后读取环境变量即可获取参数:
>>> import os >>> args = os.environ['PYTHON_ARGS'].split() >>> print(args) ['arg1', 'arg2', 'arg3']
注意:关于--分隔符的局限性
你可能会尝试python -- arg1 arg2,但Python会把arg1当作脚本文件名而报错(因为找不到这个文件),所以这个方式只适用于传递Python自身的选项类参数(比如python -v -- -W ignore),并不适合自定义位置参数,因此更推荐第一种方法。
内容的提问来源于stack exchange,提问作者Michael Koeppen
相关产品推荐
相关产品推荐

