Python 直接调用带有参数的关联脚本
如果在Windows控制台中执行此脚本(Python 直接调用带有参数的关联脚本,python,windows,Python,Windows,如果在Windows控制台中执行此脚本(test.py): 比如: 我得到了预期的输出: ['test.py', 'my', 'args'] 但如果我直接这样称呼它: >test.py my args 我得到:['C:\\temp\\test.py']输出,就好像我没有传递任何参数一样。为什么? 供参考: 与讨论类似,您需要确保命令键设置正确。在我的Windows 10副本上,我发现我在两个位置将命令设置为“C:\Python27\python.exe“%1”%* HKEY_CLASS
test.py
):
比如:
我得到了预期的输出:
['test.py', 'my', 'args']
但如果我直接这样称呼它:
>test.py my args
我得到:['C:\\temp\\test.py']
输出,就好像我没有传递任何参数一样。为什么?
供参考:
与讨论类似,您需要确保命令
键设置正确。在我的Windows 10副本上,我发现我在两个位置将命令设置为“C:\Python27\python.exe“%1”%*
HKEY_CLASSES_ROOT\Python.CompiledFile\shell\open\command
HKEY_CLASSES_ROOT\Python.File\shell\open\command
我想首先要做的是检查这两个键。与讨论类似,您希望确保命令
键设置正确。在我的Windows 10副本上,我发现我在两个位置将命令设置为“C:\Python27\python.exe“%1”%*
HKEY_CLASSES_ROOT\Python.CompiledFile\shell\open\command
HKEY_CLASSES_ROOT\Python.File\shell\open\command
我想首先要做的是检查这两个键。在这里查看此线程:cmd的assoc
和ftype
显示HKLM\Software\Classes
中的系统定义,不是来自HKCU\Software\Classes
的每用户设置,也不是Classes
键中为SystemFileAssociations
和应用程序定义的默认值。它们也不会显示用户在这些设置中的选择,这些设置存储在HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts
中。用户的选择是ShellExecuteEx
实际使用的内容。在资源管理器中,使用“打开方式”对话框(选择另一个/始终使用)或控制面板“默认程序”配置此选项。此外,对于标准3.5安装,Python.File
应使用py-launcher,它处理需要其他版本Python的脚本的Unix样式的shebang。如果启动器是为所有用户安装的,则它位于%SystemRoot%
目录(例如“C:\Windows”)中,对于该目录,命令模板将是C:\Windows\py.exe“%1”%*
。请参阅此线程:cmd的assoc
和ftype
显示HKLM\Software\Classes
中的系统定义,不是来自HKCU\Software\Classes
的每用户设置,也不是Classes
键中为SystemFileAssociations
和应用程序定义的默认值。它们也不会显示用户在这些设置中的选择,这些设置存储在HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts
中。用户的选择是ShellExecuteEx
实际使用的内容。在资源管理器中,使用“打开方式”对话框(选择另一个/始终使用)或控制面板“默认程序”配置此选项。此外,对于标准3.5安装,Python.File
应使用py-launcher,它处理需要其他版本Python的脚本的Unix样式的shebang。如果为所有用户安装了启动器,则它位于%SystemRoot%
目录(例如“C:\Windows”)中,其命令模板为C:\Windows\py.exe“%1”%*
。
>assoc | findstr .py=
.py=Python.File
>ftype Python.File
Python.File=C:\Python35\python.exe "%1" %*
HKEY_CLASSES_ROOT\Python.CompiledFile\shell\open\command
HKEY_CLASSES_ROOT\Python.File\shell\open\command