Python跨平台os.system

4

目前我的Python程序以以下方式打开文本文件:

os.system('gedit decryptedText.txt&')

现在,我认为这个方法在Windows上不会起作用,因为gedit是一个Linux应用程序。如何使其在Windows和Linux上都能运行?或者它能在两个操作系统上都工作吗?


1
如果sys.platform == 'win32':os.system('START notepad blabla'),elif platform == 'linux2'... - unddoch
3个回答

4
在MS Windows中,您可以使用os.startfile(filename)来打开与编辑器相关联的文件类型。
因此,您的完整解决方案可能如下:
def start_file(filename):
    if os.name == 'nt':
        os.startfile(filename)
    else:
        os.system('gedit %s&' % filename)

4
首先检查操作系统,然后根据结果分配任务?
if os.name == 'nt':
    os.system('notepad ecryptedText.txt&')
elif os.name == 'posix':
    os.system('gedit decryptedText.txt&')

我应该使用 if os.name == 'nt' 还是 'win32'? - user1675111
在你的系统上测试一下。我刚刚在我的Windows和Ubuntu上运行了它。os.name分别显示为'nt'和'posix' :) - Tadgh
好的。只是为了澄清,对于Windows系统,是os.system('notepad ecryptedText.txt&')还是os.system('START notepad blabla')? - user1675111
记事本在Windows安装路径中自动设置。除非由于某种疯狂的原因你丢失了关键的路径,否则不需要执行START记事本命令。 - Tadgh

0

显然,它将在两个平台上都可以工作,因为gedit是宇宙中的标准编辑器。

开玩笑。它不会工作,因为您实际上是在启动特定应用程序,该应用程序仅适用于某些平台(Linux)。您可以在配置文件中配置默认编辑器启动命令,并使用它来组成您的命令字符串。


1
挑剔一点,如果gedit只依赖于GTK+或其他什么东西,它很可能在Windows上工作。当然,这并不意味着有人实际上会在那里使用它。 - user395760

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