用Python脚本打开特定文件类型?
我想知道怎么把一个Python脚本设置成某种文件类型(比如说,*.foo)的默认应用程序。也就是说,当我在文件管理器里双击这个文件的时候,我希望它能用这个Python脚本打开。
这样做在Windows和/或Mac OS X上可以实现吗?这个应用程序是用PySide做的,如果这有影响的话。
5 个回答
- 找到任意一个类型为
foo
的文件 - 右键点击 -> 选择
获取信息
,或者点击文件图标后再点击获取信息,或者选中文件后按 Command+I - 在弹出的
打开方式
窗格中,选择指向 Python 程序的路径 - 选择好后,可以点击
全部更改
按钮 - 系统会询问你是否确认,只需点击
继续
即可
下面是我写的一个通用解决方案的例子,适用于以下两种情况:
1) 在Linux系统上打开一个已经复制过来的Windows桌面链接(*.URL文件)。
2) 在Windows系统上打开一个已经复制过来的Linux桌面链接(.Desktop文件)。
这里是处理这两种情况的Python脚本:
# UseDesktopLink.py
import sys
import webbrowser
script, filename = sys.argv
file_object = open(filename,'r')
for line in file_object:
if line[0:4]=="URL=":
url=line[4:]
webbrowser.open_new(url)
file_object.close()
在Windows上,可以使用Scott H的方法(通过一个批处理文件)来处理文件关联。
在Linux上,右键点击一个Windows的URL文件,选择“属性”,然后选择“打开方式”。接着点击“添加”来添加一个新应用程序。在“添加应用程序”窗口的底部,点击“使用自定义命令”。然后找到UseDesktopLink.py文件并点击“打开”。但在你点击“添加”之前,在“使用自定义命令”下面的文本框中,在文件名之前加上“python ”(不包括引号)。然后点击“添加”和“关闭”。
希望这对你有帮助。
Mac OS X
在Mac OS X上,你可以使用Automator来创建一个应用程序,这个程序可以调用你的Python应用,并把输入文件的路径作为字符串参数传递给它。在应用程序的工作流程向导中,添加一个“运行Shell脚本”的动作,选择Pass input:
为as arguments
,然后在文本框中添加:
python /path/to/my/app/myapp.py "$@"
这里的"$@"
会把输入中的所有参数(也就是你选择的文件)作为字符串传递下去。只要你的脚本能够处理这些输入(通过sys.argv
),并把它们当作字符串列表来使用(第一个元素是Python应用的路径),那么它就能正常工作。
当你保存这个Automator工作流程时,OS X会把它当作其他应用一样对待,你可以把这个应用设置为“*.foo”类型文件的默认打开方式。要把“*.foo”文件和这个应用关联起来,右键点击一个.foo文件,选择获取信息
,然后在打开方式:
中选择其他...
,找到你在Automator中创建的应用,最后点击更改全部...
按钮。
Windows
在Windows上,有一种类似但希望更简单的方法可以尝试。你可以创建一个批处理文件(.bat
),内容如下:
python C:\path\to\my\app\myapp.py %*
这里的%*
会展开为所有的参数。
只要你能把一个文件扩展名和这个批处理文件关联起来,那你就可以这样做,这就是你的解决方案。不过,我还没有尝试过这个Windows的解决方案,所以要谨慎对待。而Mac的解决方案,我是测试过的。