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

如何在Python中使用subprocess.run执行包含空格参数的命令

解决subprocess.run执行含空格参数的命令问题

嘿,这个问题其实很好解决!你之所以踩坑,是因为混淆了shell里的参数处理逻辑和subprocess列表模式的参数传递方式。

直接给你正确的写法:

import subprocess
subprocess.run(["touch", "test file"])

为什么之前的尝试都不对?我给你挨个理清楚:

  • subprocess.run(["touch", "'test file'"]):你把单引号也当成了文件名的一部分,所以创建出来的文件会叫'test file'(带引号),这显然不是你想要的。
  • subprocess.run(["touch", "test\ file"]):在Python字符串里,这个反斜杠会被当成普通字符传递给touch,所以文件名变成了test\ file(带反斜杠),自然不符合预期。
  • subprocess.run(["touch", "test", "file"]):这相当于给touch传了两个独立的参数,所以它会创建test和file两个文件,完全偏离你的需求。
  • subprocess.run(["touch", "'test", "file'"]):把带引号的文件名拆成了两个参数,结果就是创建'test'和file'这两个文件,肯定错了。

另外补充一种不推荐的写法(除非你有特殊场景需求):如果使用shell=True,你可以像在shell里那样写命令:

subprocess.run("touch 'test file'", shell=True)
# 或者用双引号包裹
subprocess.run('touch "test file"', shell=True)

但要注意,shell=True会启动系统shell来解析命令,当参数包含用户输入时,可能会有命令注入的安全风险,所以优先用前面的列表模式更安全可靠。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.06 06:56:30