【问题标题】:Code to open a file like double clicking on it [duplicate]打开文件的代码,例如双击它[重复]
【发布时间】:2016-10-27 09:29:03
【问题描述】:

当在文件管理器中双击文件时,它会使用与文件类型关联的应用程序自动打开。

我怎样才能从代码中做同样的事情。我对任何编程语言都持开放态度。我对 Python 和 C 有一点经验。

我的目标操作系统是 Ubuntu Linux 和 OSX。但是,理想情况下,我想找到一个适用于 Windows、OSX 和 Ubuntu linux 的解决方案。

【问题讨论】:

  • 不幸的是,这不是一个简单的问题。例如,您使用什么程序打开.pdf?那里有成百上千的.pdf 读者,并且可以通过多种方式在您的计算机上打开它。一种可行的方法是对用于打开某些文件的应用程序进行硬编码,但即使这样也可能导致一个包含数百个条目的列表
  • 我认为您需要两件事:1. 检查文件的 MIME 类型(更多信息here,以及 2. 知道您将使用哪个应用程序打开文件(我认为这可以有可能,但我不知道如何)
  • 你不用担心文件类型,像xdg-open这样的东西会在linux上为你做这件事
  • "该程序的目的是让用户不必点击文件夹来查找文件。相反,他们可以在我要编写的程序中输入名称,程序将打开文件。这样用户不需要知道文件在哪里,只是如何打开它。" - 不想学习文件管理器搜索等通用工具或在 CLI 中查找的用户,会喜欢学习这个工具的!

标签: python c linux windows macos


【解决方案1】:

对于 MAC os x

在您的 os x 终端中,您可以使用命令open 使用默认应用程序打开文件。在python中你可以使用os模块来模仿shell命令。所以你应该试试这段代码:

os.system("open foo.doc")

或者,如果您想在已经存在该窗口的实例时强制打开该窗口:

os.system("open -n foo.doc")

os.system("command") 只是从命令行执行一个命令。 open 使用其默认应用程序打开一个文件。

适用于 Linux

使用 xdg-open。示例参考this 文章。

【讨论】:

  • 能否请给我反对票的人解释一下原因。
  • 我认为这可能是因为在您的情况下open 没有做作者想做的事情。我认为作者想要启动一个应用程序,但在阅读了 open 手册页后,它听起来不像这样做
  • 我的 Windows 上没有 open 命令,但只有 os.system(file) 确实找到了文件的默认程序并打开它。所以这个答案对我的 Windows 是正确的:-)。除了 OP 在 *nix...
  • os.system 适用于 windows,open 适用于 osx 和 xdg-open 适用于 linux(或 gvfs-opengnome-open 适用于较旧的、基于 Gnome 的 Linux 桌面)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-07-19
  • 2012-03-04
  • 2011-01-01
  • 2020-10-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多