无法在python中使用sys.argv获取命令行参数

时间:2015-07-09 07:11:08

标签: python sys

我尝试将命令行参数传递给win7下的python脚本,但sys.argv的长度总是等于1。这是否意味着它无法识别这个论点? 这是代码和命令行:

import sys
def Cat(filename):
    f = open(filename, 'r')
    for line in f:
        print(line)

def main():
    if len(sys.argv) > 1:
        Cat(sys.argv[1])
    else:
        print(input('enter argument: '))
if __name__ == '__main__':
    main()

这是我的命令行:

F:\Google's_python_class\part1>Cat.py small.txt

但结果是

enter argument:

解决:

有两种解决方案:

  1. c:\...\python\python.exe Cat.py small.txt

  2. solution two

2 个答案:

答案 0 :(得分:4)

有些人报告了此类问题here

你可以通过直接调用python可执行文件来尝试启动它吗?这似乎解决了一些用户的问题。

C:\...\python.exe Cat.py small.txt

编辑:

如果正确配置了python,则可以运行:

python.exe Cat.py small.txt

答案 1 :(得分:0)

如果您尝试使用此命令Cat.py small.txt然后sys.argv[0] = 'small.txt'运行代码,则没有sys.argv[1]。试试python Cat.py small.txt。在这种情况下,'Cat.py'sys.argv[0]small.txtsys.argv[1]