Python subprocess.call 打不开 Notepad.exe?

Posted

技术标签:

【中文标题】Python subprocess.call 打不开 Notepad.exe?【英文标题】:Python subprocess.call can't open Notepad.exe? 【发布时间】:2019-12-05 19:47:50 【问题描述】:
import subprocess

subprocess.call(['C:\Windows\System32\notepad.exe'])

导致错误:

Traceback(最近一次调用最后一次):文件“C:\Program Files (x86)\Wing IDE 101 5.0\src\debug\tserver_sandbox.py",第 3 行,在 在调用中传递文件“c:\Python27\Lib\subprocess.py”,第 172 行 return Popen(*popenargs, **kwargs).wait() 文件“c:\Python27\Lib\subprocess.py”,第 408 行,在 init errread, errwrite) 文件“c:\Python27\Lib\subprocess.py”,第 663 行,在 _execute_child startupinfo) WindowsError: [错误 2] 系统找不到指定的文件

但我可以使用文件夹窗口文件名栏中的确切路径运行记事本。我错过了什么?

【问题讨论】:

那个字符串中间有一个换行符!将其指定为原始字符串:r'C:\...',这样反斜杠就不会被赋予任何特殊含义。 只要使用'notepad'作为cmd和'shell=True' 【参考方案1】:

问题是路径中未转义的反冲。 Python 将 '\n' 解释为单个换行符。

转义反斜杠:

'C:\\Windows\\System32\\notepad.exe'

或者(首选)使用带有r前缀的原始字符串

r'C:\Windows\System32\notepad.exe'

【讨论】:

【参考方案2】:

这是可能对您有用的代码 subprocess.Popen(['C:\\Windows\\System32\\notepad.exe'])

【讨论】:

以上是关于Python subprocess.call 打不开 Notepad.exe?的主要内容,如果未能解决你的问题,请参考以下文章

Python:使用 subprocess.call 获取输出,而不是 Popen [重复]

如何使用 python 2.7.6 使 subprocess.call 超时?

在 Python 中使用 subprocess.call 播放音频

Python执行外部命令(subprocess,call,Popen)

Python下的subprocess.call()使用和注意事项

如何在 python 中杀死使用 subprocess.call 调用的子进程? [复制]