[英]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.