2024-05-20 17:58:44 发布
网友
我想在几个平台(包括Mac OS)上运行一个程序,所以我尽量让它独立于平台。我自己用Windows,我有一行os.startfile(file)。这对我有效,但在其他平台上不行(我在文档中看到了,我还没有测试过自己)。
os.startfile(file)
是否有适用于所有平台的等效物?
顺便说一下,这个文件是一个.wav文件,但是我希望用户能够使用他们的标准媒体播放器,这样他们就可以暂停/回放文件。这就是为什么我使用os.startfile()。我可能可以使用允许播放/暂停/倒带媒体文件的库。
.wav
os.startfile()
只要用^{}。它可以在适当的地方调用os.startfile()、open、xdg-open。
open
xdg-open
小心,这里有一个scary text in the docs:
Note that on some platforms, trying to open a filename using this function, may work and start the operating system’s associated program. However, this is neither supported nor portable.
对我来说很好。在你的环境中测试。
查看^{}'s source code以了解需要做多少工作才能进行移植。
Python bug tracker上也有一个公开问题——Add shutil.open。”portable os.startfile()“接口比预期的要复杂。您可以尝试提交的修补程序,例如^{}。
这取决于你所说的平台无关性。如果您的问题是如何使用操作系统的默认操作打开任何文件,例如,当您双击某个文件让操作系统决定如何打开它时,简单的答案是否。
然而,要自己实现这个功能是非常容易的,但是您需要使用一些不同的方法来适应不同的操作系统,也就是说,最宽容的方法是使用os.system(WinPathWithArgs),正如我所解释的in this answer。
os.system(WinPathWithArgs)
似乎还不存在跨平台的文件打开模块,但您可以依赖流行系统的现有基础设施。此代码段涵盖Windows、MacOS和类Unix系统(Linux、FreeBSD、Solaris…):
import os, sys, subprocess def open_file(filename): if sys.platform == "win32": os.startfile(filename) else: opener ="open" if sys.platform == "darwin" else "xdg-open" subprocess.call([opener, filename])
只要用^{} 。它可以在适当的地方调用
os.startfile()
、open
、xdg-open
。小心,这里有一个scary text in the docs:
对我来说很好。在你的环境中测试。
查看^{}'s source code 以了解需要做多少工作才能进行移植。
Python bug tracker上也有一个公开问题——Add shutil.open。”portable os.startfile()“接口比预期的要复杂。您可以尝试提交的修补程序,例如^{} 。
这取决于你所说的平台无关性。如果您的问题是如何使用操作系统的默认操作打开任何文件,例如,当您双击某个文件让操作系统决定如何打开它时,简单的答案是否。
然而,要自己实现这个功能是非常容易的,但是您需要使用一些不同的方法来适应不同的操作系统,也就是说,最宽容的方法是使用
os.system(WinPathWithArgs)
,正如我所解释的in this answer。似乎还不存在跨平台的文件打开模块,但您可以依赖流行系统的现有基础设施。此代码段涵盖Windows、MacOS和类Unix系统(Linux、FreeBSD、Solaris…):
相关问题 更多 >
编程相关推荐