使用Python打开其他应用程序

3

我正在使用一台64位的笔记本电脑,操作系统是Ubuntu 12.04。我正在尝试使用Python代码打开一个应用程序。

import os
os.system("open /home/utsav/ab.txt")

出现以下错误:

"无法获取指向控制台256的文件描述符"

我需要使用什么命令?


2
在Linux下,“打开文件”没有明确定义的含义。也许你想要类似于xdg-open的东西? - Niklas B.
4个回答

1
我试过这个,它对我有效。
import os
os.system("command of your preferred app")

应用程序的命令可以在首选应用程序的“属性”中的“桌面条目”选项卡中找到。

1
你正在使用的命令 - open 实际上是另一个命令,被 man 页面称为 openvt,它可以打开虚拟终端。
我认为这不是你想要做的,所以你需要使用另一个命令(例如 gnome-open、xdg-open、geany、gedit、vim 或 nano)。

0

open在OS-X上可用,在ubuntu下,我最终使用gnome-open(如果你使用k-desktop,我不知道对应的命令是什么)。

编辑

根据Niklas B.的评论,你也可以尝试使用xdg-open


0

就我所知,Python 2.7.3 文档指出 os 模块已被弃用,应该使用 subprocess 模块。要以这种方式执行命令,可以使用 subprocess.call(args, ...)"使用 subprocess 模块")。

基于之前的回答,你可以在 Mac OS X 上使用 open,在运行 Gnome 桌面环境的 Linux 发行版上使用 gnome-open。(我在 Fedora 16 上检查了 gnome-openxdg-open,两者都能正常工作。)但在 Windows 上则需要注意一点。

对于Windows,您需要使用start,但如果文件路径或文件名中有空格,则无法正常工作。引用文件名也无法完全修复它,因为start期望带引号的未标记参数为标题(例如,对于新的cmd界面窗口)。这是一个问题,因为标题和要打开的文件都不是标记参数,因此为了使调用正常工作,您必须执行类似于start "DummyTitle" "Filename with spaces.ext"的操作。

所以我们得到的是:

  • Mac OS X:subprocess.call(['open','/path/to/file'])

  • 运行Gnome DE的Linux:subprocess.call(['gnome-open','/path/to/file'])

  • Windows:subprocess.call(['start','"DummyTitle"','"C:\\Path\\to\\File.ext"'])

或者类似于这样的东西。


对于 Python 2.7.3 之前的版本,您可以像您在问题中建议的那样使用字符串参数来使用 os 模块(只需更改系统调用的命令部分)。请注意,如果您选择使用已弃用的 os 方法,则 Windows 上有 os.startfile('/path/to/file') 可以打开文件并使用与该文件类型相关联的默认程序。


请注意,我们仍然没有确认在使用其他桌面环境的操作系统上打开文件的方法。请提出对此答案的改进建议!

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接