使用python应用程序在Windows上“打开...”文件

时间:2011-11-01 03:28:30

标签: python windows

我试图找出当用户右键单击文件并选择“打开方式”时如何使python程序打开文件。例如,我希望用户能够右键单击文本文件并选择我的程序,以便我的程序可以处理文本文件。是否将文本文件的名称传递到我的程序中?感谢。

3 个答案:

答案 0 :(得分:3)

这种方法的问题是你的.py文件不是可执行文件; Windows 将文本文件作为参数传递给.py文件,但.py文件本身不会执行任何操作,因为它不是可执行文件。

您可以做的是使用py2exe编译脚本以获取实际的可执行文件,您可以在“打开方式...”屏幕中实际指定(您甚至可以将其注册为任何*的默认值) .foo文件)。传递的.foo文件的路径应该是脚本中的sys.argv[1]

答案 1 :(得分:1)

首先,您需要在注册表中的ProgId下注册脚本以使用Python运行。至少,您需要定义打开动词:

HKEY_CURRENT_USER\Software\Classes\MyApp.ext\
  (Default) = "Friendly Name"
  DefaultIcon\
    (Default) = "path to .ico file"
  shell\
    open\
      command\
        (Default) = 'path\python.exe "path\to\your\script.py" "%L"'

如果您要在机器范围内安装,则可以替换HKEY_LOCAL_MACHINE。*还有一些您可以忽略的版本控制约定。 File Types上的MSDN部分提供了更详细的信息。

第二步是将您的ProgId添加到要在列表中显示的扩展名的 OpenWithProdIds 键中:

HKEY_CURRENT_USER\Software\Classes\.ext\OpenWithProgIds
  MyApp.ext = None

只要名称与您的ProgId完全匹配,密钥的值无关紧要。


*请注意,HKEY_CLASSES_ROOT实际上是一个“包含”HKLM\Software\ClassesHKCU\Software\Classes的联合的假密钥;如果您正在写入注册表,则应选择其中一个实际键。您无需升级即可安装到HKEY_CURRENT_USER

答案 2 :(得分:1)

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