我想做以下事情:
用例是:双击该文件,立即弹出相应的图。
我想知道如何编写python脚本才能做到这一点。 此外,窗口“打开”对话框只允许我选择可执行文件(* .exe)。如果我选择“fooOpener.py”,它就不起作用。
答案 0 :(得分:9)
这不是一个真正的编程问题,但您需要做的是弄清楚如何将Python可执行文件放入打开数据文件的注册表项中。
例如,我创建了一个名为opener.py
的小脚本,如下所示:
import sys
print(sys.argv)
input()
然后我创建了一个testfile.foo
并使用该文件属性对话框中的“更改”按钮来选择opener.py
。 (如果单击“浏览”并将“打开方式”对话框的文件过滤器更改为“所有文件”,则可以执行此操作。)
当然这没用(正如你所注意到的)。所以我打开regedit
并搜索opener.py
并在以下注册表项中找到它:
HKEY_CURRENT_USER\Software\Classes\Applications\opener.py\shell\open\command
此密钥的默认值为"C:\opener.py" %1
。我将其更改为python "C:\opener.py" %1
。它奏效了!
长话短说,要正确执行此操作,您需要自定义编辑注册表。实际上,设置文件关联比编辑一个键更复杂(您还必须指出.foo
与opener.py
相关联。)
另一种方法是使用可用于此目的的几个工具之一将您的Python脚本转换为独立的可执行文件,或者在C中编写一个启动脚本的小型可执行文件。
答案 1 :(得分:2)
assoc .foo=foofile
ftype foofile="C:\Users\<user>\AppData\Local\Programs\Python\PYTHON~1\python.exe" "C:\<whatever>\fooOpener.py" "%1" %*
如果它是pythonw.exe
文件,请使用.pyw
(以防止产生cmd窗口)。
如果要使用现有文件类型,则可以通过不分配任何内容来找到其别名。例如,assoc .txt
返回.txt=txtfile
。