You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Python中转义命令行参数中的引号以避免命令执行错误?

解决命令行参数含引号的转义问题

手动转义字符串的正确方式

你遇到的问题源于Python的字符串转义特性:在Python中要表示单个反斜杠\,必须写成两个反斜杠\\。要把输入中的双引号替换为命令行能识别的\",可以用以下代码:

test = 'printf("test")'
# 将双引号替换为转义后的\"(Python中用\\表示一个实际的\)
escaped_test = test.replace('"', '\\"')
# 生成最终命令
command = f'"c:/..." --input="{escaped_test}"'

此时command的实际内容就是你需要的格式:

"c:/..." --input="printf(\"test\")"

你之前看到test3显示为printf(\\"test\\")是Python的字符串默认表示(用repr()输出时会显示转义的反斜杠),但实际字符串中的内容已经是正确的printf(\"test\"),直接用print(command)就能看到最终的命令格式。

更安全的替代方案:使用subprocess列表传参

手动拼接命令字符串容易出错,推荐直接用subprocess的列表参数形式,它会自动处理参数的转义逻辑,无需手动操作:

import subprocess
# 用列表传递命令和参数,每个元素对应一个独立的命令部分
result = subprocess.getoutput(['c:/...', '--input', 'printf("test")'])

这种方式无需考虑引号转义,既避免了命令注入风险,也更简洁可靠。

内容的提问来源于stack exchange,提问作者max245905

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 05:23:20