“用...打开”一个Windows上的文件,带有一个python应用程序
我试图找出如何让用户右键单击文件并选择“打开方式”时,使python程序打开文件。 例如,我希望用户能够右键单击文本文件并选择我的程序,以便我的程序可以处理文本文件。 文本文件的名字是否传入我的程序? 谢谢。
这种方法的问题是你的.py文件不是可执行文件; Windows会将文本文件作为参数传递给.py文件,但.py文件本身不会执行任何操作,因为它不是可执行文件。
你可以做的是用py2exe编译你的脚本来获得一个真正的可执行文件,你可以在“Open With ...”屏幕中实际指定它(甚至可以将它注册为任何* .foo文件的默认文件)。 在脚本中传递的.foo文件的路径应该是sys.argv[1]
。
首先,您需要注册您的脚本以使用Python在注册表中的ProgId下运行。 至少,您需要定义开放式动词:
HKEY_CURRENT_USERSoftwareClassesMyApp.ext
(Default) = "Friendly Name"
DefaultIcon
(Default) = "path to .ico file"
shell
open
command
(Default) = 'pathpython.exe "pathtoyourscript.py" "%L"'
如果您在机器范围内安装,您可以替换HKEY_LOCAL_MACHINE
。*也有可能会忽略的版本约定。 文件类型的MSDN部分有更详细的信息。
第二步是将您的ProgId添加到您想要出现在列表中的扩展的OpenWithProdIds项中:
HKEY_CURRENT_USERSoftwareClasses.extOpenWithProgIds
MyApp.ext = None
只要名称与您的ProgId完全匹配,该键的值无关紧要。
*请注意, HKEY_CLASSES_ROOT
实际上是一个假密钥,它包含HKLMSoftwareClasses
和HKCUSoftwareClasses
; 如果你正在写入注册表,你应该选择一个实际的密钥。 您不需要提升安装到HKEY_CURRENT_USER
。
我的方法是使用包含python someprogram.py %1
的重定向.bat文件。 %1
将文件路径传递到可以通过访问的python脚本
from sys import argv argv[1]
上一篇: "Open with..." a file on Windows, with a python application
下一篇: safety can I expect from System.Net.Security.SslStream?