【发布时间】:2017-12-17 07:42:44
【问题描述】:
我正在尝试调用名称中带有括号的可执行文件(例如'test(1).exe')。
使用 Python 3.6.2,当我尝试以下操作时:
os.system('test(1).exe')
我明白了:
'test' is not recognized as an internal or external command, operable
program or batch file.
但如果我通过删除'(' 将文件名更改为'test1).exe',则以下操作成功:
os.system('test1).exe')
知道为什么左括号会导致os.system 出现问题吗?
【问题讨论】:
-
试试这个
test\ \(1\).exe' insideos.system()` -
如果你要使用
os.system(),你需要转义shell特殊字符/分隔符。或者,从同一函数的文档中:'subprocess模块提供了更强大的工具来生成新进程并检索它们的结果; 使用该模块优于使用此功能。请参阅子流程文档中的 Replacing Older Functions with the subprocess Module 部分,了解一些有用的秘诀。' -
如果您使用的是 Windows(如图所示),那么您需要“转义”某些字符。这是我在 Windows 命令行参考帮助文件中的说明:“与号 (
&)、管道(|) 和括号 ((和)) 是 当您将它们作为参数传递时,必须以转义字符 (^) 或引号开头。" (强调我的) -
在SS64 command-line reference 网站上标题为Syntax : Escape Characters, Delimiters and Quotes 的部分中找到了一些关于它的在线文档