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)