【问题标题】:can scriptname be empty when supplying command-line arg?提供命令行参数时,scriptname 可以为空吗?
【发布时间】:2013-01-08 06:46:27
【问题描述】:

使用模块 sys 可以得到这样的命令行参数

import sys
for x in sys.argv:
    print x

然后在命令 shell[ubunto]

>>python file.py 1, 2, 3

这将打印 文件[文件名] 1 2 3 现在我的疑问来了 在 python 文档 3.0.1 中提到

如果没有将脚本名称传递给 Python 解释器,则 argv[0] 为空字符串。

>>python  1, 2, 3

如果我没有传递脚本名称,则会导致“无法打开文件”的错误。当您不传递脚本名称时,如何将 argv[0] 初始化为空字符串?

【问题讨论】:

    标签: python


    【解决方案1】:

    在shell中,你可以做python -c "print 'Hello World!'"之类的事情,或者你可以通过管道将源代码放入python。在这种情况下,python 没有可用的文件名。在所有其他情况下,Python 将有一个文件名。即使你使用 shebang-line:

    #! /usr/bin/python
    

    然后调用

    ./file.py 1, 2, 3
    

    shell 会将其转换为正确的解释器调用

    python file.py 1, 2, 3
    

    【讨论】: