将文件扩展名关联到python脚本,以便我可以在Windows中双击打开该文件

hel*_*ker 9 python windows file-extension file-association

我想做以下事情:

  1. 将数字数据保存为类似CSV的格式,扩展名为".foo";
  2. 将".foo"文件扩展名与一些python脚本相关联,后者依次打开.foo文件,读取其内容,并使用绘图库(最可能是matplotlib)绘制内容.

用例是:双击文件,立即弹出相应的图表.

我想知道如何编写python脚本才能做到这一点.此外,窗口"打开"对话框只允许我选择可执行文件(*.exe).如果我选择"fooOpener.py",它就不起作用.

kin*_*all 9

这不是一个真正的编程问题,但您需要做的是弄清楚如何将Python可执行文件放入打开数据文件的注册表项中.

例如,我创建了一个名为的Python脚本opener.py,如下所示:

import sys
print(sys.argv)
input()
Run Code Online (Sandbox Code Playgroud)

然后我创建了一个testfile.foo并使用该文件属性对话框中的"更改"按钮进行选择opener.py.(如果单击"浏览"并将"打开方式"对话框的文件过滤器更改为"所有文件",则可以执行此操作.)

当然这没用(正如你所注意到的).所以我打开regedit并搜索opener.py并在以下注册表项中找到它:

HKEY_CURRENT_USER\Software\Classes\Applications\opener.py\shell\open\command
Run Code Online (Sandbox Code Playgroud)

此密钥的默认值为"C:\opener.py" %1.我改成了python "C:\opener.py" %1.有效!

长话短说,要做到这一点你需要自定义编辑注册表.其实建立文件关联不仅仅是编辑一个键更复杂的(你要还表明,.foo与相关opener.py).

另一种方法是使用可用于此目的的几种工具之一将Python脚本转换为独立的可执行文件,或者在C中编写一个启动脚本的小型可执行文件.

  • 您正在设置每用户关联(HKCU),但是如果要为HKLM中的所有用户设置此关联,则可以轻松使用命令提示符的`assoc`和`ftype`命令,例如`assoc .foo = FooFile `和`ftype FooFile ="C:\ Python27\python.exe""C:\ opener.py""%1"%*`. (8认同)

Hon*_*Abe 6

  1. 按windows键
  2. 输入cmd
  3. 右键单击结果并选择“以管理员身份运行”
  4. assoc .foo=foofile
  5. 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.