【问题标题】:sys.argv[0] always returns nothing [duplicate]sys.argv[0] 始终不返回任何内容[重复]
【发布时间】:2019-01-04 14:50:11
【问题描述】:

我试图使用 sys.argv[0] 来获取脚本的名称,但它什么也没返回。我猜那是因为没有将脚本名称传递给 Python 解释器,但我不知道如何修复它。

我的代码:

import sys
print ("This is the name of the script: ", sys.argv[0])
sys.argv[0]

输出:

>>> import sys
>>> print ("This is the name of the script: ", sys.argv[0])
This is the name of the script:
>>> sys.argv[0]
''

谢谢

【问题讨论】:

  • 没有办法修复它,因为没有什么可修复的?你希望它返回什么?

标签: python read-eval-print-loop argv sys


【解决方案1】:

嗯,这是预料之中的,

你在解释器上运行你的代码,它不是任何模块也不是文件,所以sys.argv 知道这一点并给你一个空字符串。

这是一个好兆头。

如果您在实际的模块或文件中运行它,它会按预期完美运行。

【讨论】:

  • 你是对的。谢谢!
【解决方案2】:

你应该在 shell 中运行你的代码,然后参数是 python 文件名,就像:python3 test.py first second。然后在代码中,你可以找到文件中的args。

print(sys.argv[1]) -------> first<br>    
print(sys.argv[2]) -------> second

希望对你有所帮助。

【讨论】:

  • 测试一下,看看你会得到什么。
  • 谢谢。我确实在shell中运行了代码。但是 sys.argv[0] 仍然无法为我获取文件名。 sys.argv[1] 和 sys.argv[2] 都返回:IndexError: list index out of range。所以我认为 sys.argv 仍然是空的。
  • @Xiaoyu 你应该看看我的。
  • 否则,你应该截图,让我看看。
猜你喜欢
  • 2021-03-14
  • 2018-07-30
  • 2023-03-29
  • 2019-06-08
  • 1970-01-01
  • 2016-08-10
  • 2013-02-18
  • 1970-01-01
  • 2021-08-03
相关资源
最近更新 更多