【问题标题】:Unable to pass double forward slash in Python subprocess无法在 Python 子进程中传递双正斜杠
【发布时间】:2022-01-19 17:02:55
【问题描述】:

我尝试使用 subprocess 来运行系统命令,但是当我使用双斜杠传递参数时,斜杠被替换为空格。

获取此代码:

i = subprocess.Popen(["netsed", "udp", "8080", "127.0.0.1", "8081", r"'s/X-Header: value//'"])

进程运行时,最后一个参数不正确:

ps aux | grep netsed
root      783457  0.0  0.0   2692   804 pts/0    S+   17:00   0:00 netsed udp 8080 127.0.0.1 8081 's/X-Header: value  '

如何传递双正斜杠?

【问题讨论】:

  • 这似乎对我有用 subprocess.Popen(["echo", r"'s/X-Header: value//'"]) 就像“非原始”版本 subprocess.Popen(["echo", "'s/X-Header: value//'"]) 一样。两者都导致's/X-Header: value//'
  • 我怀疑是 ps 这样做的,而不是 subprocess
  • @JonSG 谢谢,看起来 ps 输出混淆了这个问题。感谢您的测试让我朝着正确的方向前进。

标签: python python-3.x subprocess


【解决方案1】:

ps 的输出让我大吃一惊。

我真正需要做的是从选项中删除引号,因为它是由子进程自动引用的。

感谢您的反馈。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-10-23
    • 2021-02-18
    • 1970-01-01
    • 1970-01-01
    • 2013-06-24
    • 2013-07-23
    • 2016-02-03
    • 1970-01-01
    相关资源
    最近更新 更多