2011-11-01 191 views

回答

3

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

你可以做的是编译你的脚本py2exe以获得一个实际的可执行文件,你可以在“Open With ...”屏幕中实际指定它(甚至可以将它注册为任何* .foo文件的默认文件)。在脚本中传递的.foo文件的路径应该是sys.argv[1]

+0

py2exe访问的Python脚本是矫枉过正,因为它使一个程序,一个独立的EXE不都需要蟒蛇,它需要每次重新编译该程序被改变(如果你开发它)。在%python%\ Scripts \中有exe文件,它只是启动一个名称相同的python脚本。有人知道这件事吗? –

0

首先,您需要注册脚本以使用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如果您正在安装机器宽*还有一些版本约定,你大概可以忽略不计。 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

+0

我会声明我没有试过这个,因为我并不特别想在这台机器上弄乱我的设置。 MSDN建议需要设置一些其他值,但通过我的注册表快速浏览说,它们不是必需的。如果这个最小的解决方案有效,绝对有兴趣继续前进并编辑我错过的任何额外位。 – Zooba

+0

这根本行不通;在“打开方式”菜单中选择.py仍然报告它不是win32应用程序。 –

0

我的方法是使用包含python someprogram.py %1的重定向.bat文件。该%1传递文件路径为可与
from sys import argv argv[1]

相关问题