“用...打开”一个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实际上是一个假密钥,它包含HKLMSoftwareClassesHKCUSoftwareClasses ; 如果你正在写入注册表,你应该选择一个实际的密钥。 您不需要提升安装到HKEY_CURRENT_USER


我的方法是使用包含python someprogram.py %1的重定向.bat文件。 %1将文件路径传递到可以通过访问的python脚本
from sys import argv argv[1]

链接地址: http://www.djcxy.com/p/9931.html

上一篇: "Open with..." a file on Windows, with a python application

下一篇: safety can I expect from System.Net.Security.SslStream?