我怎样才能让一个Python脚本成为特定文件类型(例如*.foo)的默认应用程序呢?也就是说,当我在Finder / Explorer中双击该文件时,我想要该文件在Python脚本中打开。
在Win和/或OS X中是否可以实现这一点?该应用程序是一个PySide应用程序(如果有关系的话)。
我怎样才能让一个Python脚本成为特定文件类型(例如*.foo)的默认应用程序呢?也就是说,当我在Finder / Explorer中双击该文件时,我想要该文件在Python脚本中打开。
在Win和/或OS X中是否可以实现这一点?该应用程序是一个PySide应用程序(如果有关系的话)。
在 Mac OS X 上,您可以使用 Automator 创建一个应用程序,调用您的 Python 应用程序并将输入文件路径作为字符串参数传递。在应用程序工作流向导中,添加操作 "运行 Shell 脚本",选择 传递输入:
为 作为参数
,并在文本框中添加:
python /path/to/my/app/myapp.py "$@"
"$@"
将输入文件中的任何参数作为字符串传递。只要您的脚本将输入(sys.argv
)设置为字符串列表(第一个是Python应用程序路径),那么它就可以工作。“获取信息(Get Info)”
, “打开方式: 其他…”
,选择在Automator中创建的应用程序,然后单击“全部更改(Change All…)”
按钮。
.bat
):python C:\path\to\my\app\myapp.py %*
%*
会扩展到所有参数。
只要你能将文件扩展名与批处理文件相关联,那么就可以这样做,而这就是你的解决方案。然而,我没有尝试过这个Windows解决方案,所以需要持怀疑态度。另一方面,我测试过Mac解决方案。
# 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()
foo
的文件获取信息
或单击文件图标,然后单击获取信息或单击文件并按下Command+I打开方式
窗格中,选择到Python二进制文件的路径全部更改
按钮继续
*.py
文件,您需要按照步骤 1 中的 foo
改为 .py
。 - Lelouch Lamperougeint main(int argc, char *argv[]){
char cmd[0xFF];
// For me, argv[1] is the location of the file that is being opened. I'm not sure if this is different on other OSes
snprintf(cmd,sizeof cmd,"python YOUR_PYTHON_SCRIPT_HERE.py -a %s", argv[1]);
system(cmd);
return 0;
}
然后我编译了C程序,并将其设置为文件扩展名的默认应用程序。
然后,在Python脚本YOUR_PYTHON_SCRIPT_HERE.py中,我像这样接收参数:
import sys
assert len(sys.argv) > 2 # Breaks if you call the script without the arguments
theFile = " ".join(sys.argv[2:]) # What the c program gives us
print(theFile) # Print it out to prove that it works
theFile将包含正在打开的文件的位置
通过使用以下方法获取文件内容:
with open(theFile,"r") as f:
fileContents = f.read()
在Windows上:
.docx
文件作为示例)打开方式...
python
始终使用所选程序打开此类文件
。注意:这将在Python shell的上下文中运行.docx
文件的内容。一旦完成对文件内容的评估,它将立即关闭。如果您想在文字处理器中编辑文件,也许您应该下载notepad++,并将其作为默认应用程序选择。
.open
方法似乎只能在默认应用程序中打开文件。即使你可以,它也不会比我的答案更好,因为你需要一个 Java 应用程序来打开 Python 脚本。 - potato