使用python应用程序在Windows上打开一个文件

我想弄清楚如何使一个Python程序打开一个文件,当用户右键单击该文件并select“打开方式”。 例如,我希望用户能够右键单击文本文件并select我的程序,以便我的程序可以处理文本文件。 文本文件的名字是否传入我的程序? 谢谢。

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

你可以做的是用py2exe编译你的脚本来获得一个真正的可执行文件,你可以在“Open With …”中打开它(甚至可以把它注册为任何* .foo文件的默认文件)。 正在传递的.foo文件的路径应该是脚本中的sys.argv[1]

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

 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来代替,如果你是在机器上进行安装的话。还有一些你可能会忽略的版本约定。 文件类型的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

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