我试图向我的朋友解释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']
答案 0 :(得分:3)
argv[0]
是脚本名称(无论这是否是完整路径名,它依赖于操作系统)。如果使用解释器的-c
命令行选项执行命令,则argv[0]
将设置为字符串'-c'
。
将命令本身放在argv[]
中也是错误的,因为它不是脚本的参数。参数只是bla
和stas
。
答案 1 :(得分:0)
Python将-c
参数视为特殊情况,并不将代码字符串放入sys.argv
。