为什么相同PowerShell命令在控制台可运行但Python os.system调用失败?
问题原因
- Windows系统中
os.system默认调用的解释器是cmd.exe,而非你预期的PowerShell。你构造的命令使用了PowerShell专属语法(&调用操作符、单引号包裹带空格的路径规则),cmd.exe完全不识别该语法规则,因此直接执行会抛出路径语法错误。
修复方案
修改命令字符串,在你原有PowerShell命令外层嵌套PowerShell启动参数即可,修改后的构造代码如下:
# 注意原命令内的单引号需要替换为两个连续单引号完成转义 cmdl = r'powershell -Command "& ''C:\Program Files\7-Zip\7z'' a -mx=0 X:/myarch.zip X:/myarch"' os.system(cmdl)
- 新增的
powershell -Command前缀会告知cmd.exe启动PowerShell程序来执行后续传入的命令内容 - 原命令内的单引号替换为两个连续单引号,是PowerShell命令参数的标准转义规则,用来正确识别路径里的单引号包裹标记
内容的提问来源于stack exchange,提问作者fednem
相关产品推荐
相关产品推荐

