Python 无法获取sys.argv[1]值

Python 无法获取sys.argv[1]值,python,Python,我正在尝试执行一个非常简单的脚本。 它只打印传递的第一个参数 代码是 import sys def check(argument): '''Open, read, and print a file.''' print argument if __name__ == "__main__": check(sys.argv[1]) 然而,当我从命令行执行时,我总是会遇到这个错误 C:\>sample.py myname Traceback (most recent call l

我正在尝试执行一个非常简单的脚本。 它只打印传递的第一个参数

代码是

import sys
def check(argument):
  '''Open, read, and print a file.'''
  print argument

if __name__ == "__main__":
  check(sys.argv[1])
然而,当我从命令行执行时,我总是会遇到这个错误

C:\>sample.py myname

Traceback (most recent call last):
  File "C:\sample.py", line 7, in <module>
    check(sys.argv[1])
IndexError: list index out of range
C:\>sample.py myname
回溯(最近一次呼叫最后一次):
文件“C:\sample.py”,第7行,在
检查(sys.argv[1])
索引器:列表索引超出范围

任何帮助

您的脚本都很好,但您执行脚本的方式是错误的

C:>sample.py myname
这使用windows文件扩展名检测来启动python解释器。争论可能会以这种方式消失。试着像这样执行它:

C:>python sample.py myname

另外,请参见。

您的脚本很好,但执行它的方式是错误的

C:>sample.py myname
这使用windows文件扩展名检测来启动python解释器。争论可能会以这种方式消失。试着像这样执行它:

C:>python sample.py myname

另外,请参见。

这可能是Windows问题:

这可能是Windows问题:

与您的问题没有直接关系,但您应该始终确保捕获所有可能的错误。这包括检查列表索引是否不超出范围,例如:try:arg=sys.argv[1],索引器除外:pass else:check(arg)与您的问题没有直接关系,但您应始终确保捕获所有可能的错误。这包括检查列表索引是否超出范围,例如:try:arg=sys.argv[1],索引器除外:pass else:check(arg)为什么?它提供了一个潜在的解决方案,如果你通读bug报告上的线程,为什么?它提供了一个潜在的解决方案,如果你通读错误报告上的线程。谢谢,我按照7936期中的步骤编辑注册表值,它解决了我的问题。谢谢,我按照7936期中的步骤编辑注册表值,它解决了我的问题