3

我在 64 位笔记本电脑上使用 Ubuntu 12.04。我正在尝试使用 python 代码打开一个应用程序。

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

它给出了以下错误:

“无法获得引用控制台 256 的文件描述符”

我想使用什么命令?

4

4 回答 4

1

您正在使用的命令 -open实际上是手册页中称为 的另一个命令openvt,它会打开一个虚拟终端。

我不认为那是你想要做的,所以你会想要使用另一个命令(例如 gnome-open、xdg-open、geany、gedit、vim 或 nano)。

于 2012-05-30T16:06:46.510 回答
1

我试过这个。这个对我有用。

import os
os.system("command of your preferred app")

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

于 2020-08-22T15:40:25.070 回答
0

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

编辑

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

于 2012-05-30T16:05:37.307 回答
0

对于它的价值,Python 2.7.3 文档说该os模块已弃用,subprocess应该使用该模块。要以这种方式执行命令,您可以使用subprocess.call(args, ...)“使用子进程模块”)。

根据之前的答案,您可以将open其用于 Mac OS X 和gnome-open运行 Gnome 桌面环境的 Linux 发行版。(我检查过gnome-openxdg-open并且两者都在 Fedora 16 上工作。)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'])

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

或类似的东西。


对于 2.7.3 之前的 Python 版本,您可以os按照您在问题中的建议使用带有这些 args 作为字符串的模块(只需更改系统调用的命令部分)。另请注意os.startfile('/path/to/file'),如果您采用已弃用的os路线,Windows 将使用该文件类型的任何关联默认值打开文件。


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

于 2012-05-31T01:37:53.587 回答