在 Windows 和 Mac OS 中使用 Python 中的默认操作系统应用程序打开文档

2024-04-17

我需要能够在 Windows 和 Mac OS 中使用默认应用程序打开文档。基本上,我想要执行与双击资源管理器或 Finder 中的文档图标时发生的相同操作。在 Python 中执行此操作的最佳方法是什么?


Use the subprocess模块在 Python 2.4+ 上可用,但不可用os.system(),所以你不必处理 shell 转义。

import subprocess, os, platform
if platform.system() == 'Darwin':       # macOS
    subprocess.call(('open', filepath))
elif platform.system() == 'Windows':    # Windows
    os.startfile(filepath)
else:                                   # linux variants
    subprocess.call(('xdg-open', filepath))

双括号是因为subprocess.call()想要一个序列作为它的第一个参数,所以我们在这里使用一个元组。在带有 Gnome 的 Linux 系统上还有一个gnome-open命令做同样的事情,但是xdg-open是 Free Desktop Foundation 标准,适用于 Linux 桌面环境。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 Windows 和 Mac OS 中使用 Python 中的默认操作系统应用程序打开文档 的相关文章

随机推荐

  • 多个 NSEntityDescription 声明 NSManagedObject 子类

    我正在创建一个允许我使用核心数据的框架 在框架的测试目标中 我配置了一个名为的数据模型MockModel xcdatamodeld 它包含一个名为MockManaged有一个单一的Date财产 为了测试我的逻辑 我正在创建一个内存存储 当我
  • 为什么必须对存储在堆中的函数的局部变量调用delete?

    假设您有以下函数 void doSomething int data new int 100 为什么这会产生内存泄漏呢 由于我无法在函数外部访问此变量 为什么编译器不在每次调用此函数结束时自行调用delete 为什么这会产生内存泄漏呢 因为
  • 核心数据迁移非常慢

    我正在尝试执行核心数据迁移 一切正常 只是迁移本身需要 10 多秒的时间 我正在使用 xcmappingmodel 在两个模型版本之间进行映射 效果很好 除了所需的时间长度之外 在下面的代码中 开始迁移 和 完成迁移 日志之间有 10 秒
  • 如何使用 make 打印目标的所有先决条件并构建规则

    一个大的项目通常有一个复杂的Makefile系统 有许多变量定义和目标先决条件依赖项分散在不同的 Makefile 中 有什么方便的方法来打印目标的所有先决条件和构建规则吗 具体来说 有两个问题 问题1 假设我有四个 Makefile 生成
  • 设置并验证 Python MySQL 连接中使用的 SSL/TLS 版本

    如何告诉 Python MySQL 连接器使用哪种 SSL TLS 协议 特定的 例如 TLS1 2 或最低的 如何检查已建立的连接使用哪种协议 我有一个应用程序使用mysql connector python 8 0 18 我连接这样的东
  • 将 CMake 变量从 GUI 导出到命令行

    是否可以将 CMake GUI 中设置的所有变量值导出到单个命令行字符串 以便可以从外部工具快速使用它 所以输出会是这样的 cmake DVar1 ON DVar2 foo 你可以从 Tools gt Show My Changes
  • Corda 真的需要公证人才能达成唯一性共识吗?

    科达共识简介 https docs corda net releases release V2 0 key concepts consensus html说 唯一性共识是由公证人提供的 我们是说 如果没有公证人 A 有可能说服 B 将一笔交
  • 我如何通过查询从 Firestore 获取单个文档(我正在使用 Ionic 4 )

    早上好 我在 firestore 中有数据库如下 collections documents fields 123 news1 title some data news2 content some data 例如我想获取我的 ionc4 应
  • Java FXML 从绝对路径加载(动态)

    我想从绝对路径或 jar 系统外部的路径加载 fxml 文件 背景 它将是一个简单的插件系统 在插件文件夹中查找所有 fxml 文件 后来的 jar 文件 并将其自动包含在 TabPane 中 String fxmlpath C plugi
  • ColdFusion 参数化查询

    我运行一个查询来填充我试图参数化的 CFChart
  • 强制使用牙套

    作为我不久前写的代码标准文档的一部分 我强制要求 您必须始终对循环和 或条件代码块使用大括号 即使 特别是 它们只有一行 Example this is wrong if foo bar else baz while stuff thing
  • 气泡聊天布局

    我有一个布局
  • python“in”运算符反映的魔术方法

    运算符有两种魔法方法 普通方法和反射方法 object other or self other Implements bitwise or using the operator other object ror self other Imp
  • 工资高于部门平均水平的员工? [复制]

    这个问题在这里已经有答案了 我有一个名为员工的表 其中有姓名 部门 ID 和薪水 我想找到工资高于所在部门平均工资的员工 并查看他们的姓名 部门id 工资以及所在部门的平均工资 我已经编写了这段代码 但它不起作用 我们该如何解决这个问题 提
  • 将浮点数转换为美元和美分

    首先 我已经尝试过这篇文章 除其他外 Python 中的货币格式 https stackoverflow com questions 320929 currency formatting in python 它对我的变量没有影响 我最好的猜
  • JQuery 登录重定向。包含代码

    嘿我在这里做错了什么 对 ajax 来说非常陌生 document ready function submit click function waiting show 500 empty show 500 reg hide 0 messag
  • Chrome DevTools 未在 html 标记中显示“checked”或“checked=”true”属性

    在 Chrome DevTools 中 如何知道复选框或单选按钮是否被选中 当您单击以上任何一项时 该属性checked根本没有显示 这很烦人 因为我必须猜测发生了什么 这会让开发过程变慢 我需要应用一些设置吗 复选框有两个属性来说明它被选
  • 在puppeteer中如何等待弹出页面完成加载?

    在下面的示例中 如何等待弹出窗口完成加载 单击 google 图标后 当我尝试交互时 您会弹出一个登录 gmail 的窗口 第二页是未定义的 因为我不知道如何等待它完全加载 有什么建议吗 const puppeteer require pu
  • 撇号前面不带 \

    我在 Android 应用程序中定义了一个字符串
  • 在 Windows 和 Mac OS 中使用 Python 中的默认操作系统应用程序打开文档

    我需要能够在 Windows 和 Mac OS 中使用默认应用程序打开文档 基本上 我想要执行与双击资源管理器或 Finder 中的文档图标时发生的相同操作 在 Python 中执行此操作的最佳方法是什么 Use the subproces