注意:我已经尝试过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)
Man ... python再次变得如此简单!
答案 0 :(得分:0)
从主要签名中删除argv
参数,然后使用sys.argv[1]
:
def main():
print(sys.argv[1])
您还需要致电main:
if __name__ == '__main__':
main()