用于在Windows中双击的Python子流程模块等效项
我想使用用于在Windows中双击的Python子流程模块等效项,python,windows,subprocess,explorer,Python,Windows,Subprocess,Explorer,我想使用子流程模块打开一个文件,就像在资源管理器中双击该文件一样。我该怎么做 我试过下面这句话: subprocess.call("C:/myfile.csv", shell=True) 这会抛出一个错误,说: 命令的语法是 不正确。 “C:\”未被识别为 内部或外部命令, 可操作的程序或批处理文件 如何使用子流程模拟双击?基本上我想在Excel2007中打开一个CSV文件 os.startfile(r'C:\myfile.csv') (仅限Win32。对于Mac,使用'open filen
子流程
模块打开一个文件,就像在资源管理器中双击该文件一样。我该怎么做
我试过下面这句话:
subprocess.call("C:/myfile.csv", shell=True)
这会抛出一个错误,说:
命令的语法是
不正确。“C:\”未被识别为 内部或外部命令, 可操作的程序或批处理文件 如何使用
子流程模拟双击?基本上我想在Excel2007中打开一个CSV文件
os.startfile(r'C:\myfile.csv')
(仅限Win32。对于Mac,使用'open filename'
运行进程;在Linux/freedesktop上,通常使用'xdg-open filename'
)我认为您的部分问题是使用unix样式的斜杠/作为路径分隔符,而不是windows反斜杠。看起来windows正在将/myfile.csv
解释为程序C:
的参数,这就是您收到该消息的原因
然而,如果你纠正了这一点,我想你会明白,C:\myfile.csv
不是一个程序。我知道这有点晚了,但是在Python2.x中(不确定是否是3),你应该使用子进程
模块,引用Popen
。代码如下:
import subprocess
subprocess.Popen(r'explorer /select, "C:\"')
它基本上打开文件,然后在默认程序中打开 我认为subprocess.call(r'C:\myfile.csv',shell=True)
应该这样做(不确定,而且os.startfile
更干净)。@Chris:我实际上使用了shell=True
,忘了在问题中包含它。使用shell=True
会产生我上面提到的错误。我认为您忽略了这样一个事实,即Chris在路径中使用了带反斜杠的原始字符串,而您在路径中没有使用该字符串(差异可能很大)。+1subprocess.call
尝试将某些内容作为可执行文件运行。您的CSV文件不是可执行文件;这是一个人的数据。每个平台都有自己的实用程序应用程序,用于“找出这是什么类型的文件并将其提供给适当的应用程序”,这正是您真正想要做的。