繁体   English   中英

命令行参数未检索

[英]command line arguments are not retrieved

注意:我已经在stackoverflow上尝试了所有解决方案!

我正在使用Windows 10和python 3.5。 我收到此错误:

Traceback (most recent call last):
File "geiger_plot.py", line 236, in <module>
    main()
TypeError: main() missing 1 required positional argument: 'argv'

当我尝试使用每个可以想象的命令执行脚本时:

geiger_plot.py test
python geiger_plot.py test
"C:\Program Files\Python35\python.exe" geiger_plot.py test
"C:\Program Files\Python35\python.exe" C:\Users\Chaosuser\Desktop\GeigerLog\geiger_plot.py test test test

我已经修复了python命令行参数的注册表项:

[HKEY_CLASSES_ROOT\Applications\python.exe\shell\open\command]
@="\"C:\\Program Files\\Python35\\python.exe\" \"%1\" %*"

[HKEY_CLASSES_ROOT\Applications\pythonw.exe\shell\open\command]
@="\"C:\\Program Files\\Python35\\pythonw.exe\" \"%1\" %*"

(这是从导出的.reg中提取的-这就是为什么有成千上万个反斜杠的原因。)在脚本本身中,我所知道的一切都是正确的。 这是一个我想从另一个脚本执行的脚本,它使用一个参数将其传递给文件路径( logfile )。 这总是给我带来错误,因此我尝试直接从Shell运行它。

import sys

def main(argv):
    sys.argv
    print(sys.argv)
    logfile = str(sys.argv[1])

它甚至没有到那里给我关于sys.argv使用的错误!

怎么了?

解决方法是删除argv:

def main(argv):
    print(sys.argv)
to
def main():
    print(sys.argv)

伙计... python变得如此简单又困难!

从main的签名中删除argv参数,只需使用sys.argv[1]

def main():
    print(sys.argv[1])

您还需要致电main:

if __name__ == '__main__': 
    main()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM