Python subprocess模块在Windows中双击的等效方法

5 投票
3 回答
2701 浏览
提问于 2025-04-16 08:29

我想用 subprocess 模块打开一个文件,就像在资源管理器中双击文件一样。请问我该怎么做?

我试过以下这一行:

subprocess.call("C:/myfile.csv", shell=True)

但是出现了一个错误,提示:

命令的语法不正确。
'C:\' 不是内部或外部命令,也不是可操作的程序或批处理文件。

我该如何用 subprocess 模拟双击呢?基本上,我想在 Excel 2007 中打开一个 CSV 文件。

3 个回答

0

我知道这个回答有点晚了,不过如果你想在 Python 2.x 中做到这一点(不太确定在 3.x 中是否一样),你应该使用 subprocess 模块,具体是用到 Popen。下面是代码:

import subprocess
subprocess.Popen(r'explorer /select, "C:\"')

这段代码的基本意思是打开一个文件,然后用默认程序来打开它。

1

我觉得你遇到的问题部分是因为你用了Unix风格的斜杠 / 来分隔路径,而不是Windows的反斜杠 \。看起来Windows把 /myfile.csv 解释成了程序 C: 的一个参数,所以你才会看到那个提示信息。

不过如果你把这个问题修正过来,我想你会看到的提示是 C:\myfile.csv 不是一个程序。

10
os.startfile(r'C:\myfile.csv')

(这个只适用于Windows系统。如果你是在Mac上,可以用 'open filename' 来打开一个文件;在Linux或者其他类似的系统上,可以用 'xdg-open filename' 来打开文件。)

撰写回答