为什么在python中打印参数不起作用?

时间:2015-10-29 21:03:58

标签: python command-line-arguments

我试图向我的朋友解释sys.argv的工作原理。我从命令行运行此代码片段(在cmd和bash上测试)。

python -c "import sys; print(sys.argv)" bla stas

但令我惊讶的是这是输出:

['-c', 'bla', 'stas']

我感到难过 - 为什么引号"import sys; print(sys.argv)"中的表达式不是参数列表的一部分?不应该像这样排在第二位:

['-c', '"import sys; print(sys.argv)"', 'bla', 'stas']

2 个答案:

答案 0 :(得分:3)

来自documentation

  

argv[0]是脚本名称(无论这是否是完整路径名,它依赖于操作系统)。如果使用解释器的-c命令行选项执行命令,则argv[0]将设置为字符串'-c'

将命令本身放在argv[]中也是错误的,因为它不是脚本的参数。参数只是blastas

答案 1 :(得分:0)

Python将-c参数视为特殊情况,并不将代码字符串放入sys.argv