Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/296.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 无法检索命令行参数_Python_Windows_Python 3.x_Command Line_Command Line Arguments - Fatal编程技术网

Python 无法检索命令行参数

Python 无法检索命令行参数,python,windows,python-3.x,command-line,command-line-arguments,Python,Windows,Python 3.x,Command Line,Command Line Arguments,注意:我已经尝试了stackoverflow上的所有解决方案 我正在使用Windows10和python 3.5。我得到了这个错误: 回溯(最近一次呼叫最后一次): 文件“geiger_plot.py”,第236行,在 main() TypeError:main()缺少1个必需的位置参数:“argv” 当我尝试使用所有可以想象的命令执行脚本时: geiger_plot.py测试 python geiger_plot.py测试 “C:\Program Files\Python35\python.

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

我正在使用Windows10和python 3.5。我得到了这个错误:

回溯(最近一次呼叫最后一次):
文件“geiger_plot.py”,第236行,在
main()
TypeError:main()缺少1个必需的位置参数:“argv”
当我尝试使用所有可以想象的命令执行脚本时:

geiger_plot.py测试
python geiger_plot.py测试
“C:\Program Files\Python35\python.exe”geiger_plot.py测试
“C:\Program Files\Python35\python.exe”C:\Users\Chaosuser\Desktop\GeigerLog\geiger\u plot.py测试
我已经修复了python命令行参数的注册表项:

[HKEY\U CLASSES\U ROOT\Applications\python.exe\shell\open\command]
@=“\'C:\\ProgramFiles\\Python35\\python.exe\”\%1\“%*”
[HKEY\U CLASSES\U ROOT\Applications\pythonw.exe\shell\open\command]
@=“\”C:\\ProgramFiles\\Python35\\Pythonnw.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()

Python不会自动执行名为
main()
的函数。在脚本末尾,使用
main(sys.argv)
语句自己调用它。如果您的脚本也可以由另一个脚本导入(您可能不希望运行
main()
),那么您可能希望使用
if.\uu name.\uuu='.\uu main.\uu':
)将该脚本设置为有条件的。该键是用于阅读的合并视图。给它写信的结果是不确定的。特定于要更新的确切配置单元:
[HKLM | HKCU]\SOFTWARE\Classes
。另外,如果当前用户实际配置为使用
Applications\python.exe
子键,则您已经修改(破坏)了python安装。它应该使用
Python.File
Python.noconfig
,它们应该使用py[w].exe启动器。用户选择在此处(只读):
HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.py\UserChoice
。我手动完成了此操作,并使用regedit的导出功能获取密钥,以便与其他人共享。这[HKLM | HKCU]如何具体?我查看了python.file和python.noconfig,它们从一开始就没问题。没有py.exe或pyw.exe,在我的例子中是python.exe什么是“主签名”?def总管(argv):?在脚本末尾,是否放置sys.argv?有什么区别?是的,这就是我所说的主签名。我只是编辑了答案,让它更清楚。底部已经有了
if uuuu name\uuuu=='\uuuu main\uuuu':
。但我可能应该从签名中删除argv。我试试。。。。是的,这就是解决办法。fgs,这么简单。。。