未检索命令行参数
command line arguments are not retrieved
注意:我已经在 Whosebug 上尝试了所有解决方案!
我正在使用 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()
注意:我已经在 Whosebug 上尝试了所有解决方案!
我正在使用 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()