微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在 python 子过程中调用 `echo "test"` 给出 `b'\\test"\n'`

如何解决在 python 子过程中调用 `echo "test"` 给出 `b'\\test"\n'`

为什么在 Python 中(Windows 10 上运行 bash 的 Cygwin 终端中的 3.6)

>>> import subprocess
>>> subprocess.check_output(['echo','"test"'])
b'\\test"\n'

注意:令人困惑的一点是主要的反斜线

为了更清楚地说明这一点:

>>> print(subprocess.check_output(['echo','"test"']).decode())
\test"

结果是 Python2.7 给了我预期的结果,但是两个不同的 Python 3 安装给出了错误一个


在我的理解中,subprocess.list2cmdline(x) 在粘贴到终端时应该给出与 subprocess.check_output(x) 完全等效的内容在这种情况下,虽然 subprocess.list2cmdline(['echo','"test"'])==r'echo \"test\"' 并将后者粘贴到终端中时,我确实得到了预期的结果

$ echo \"test\"
"test"

更多测试:

>>> subprocess.check_output(subprocess.list2cmdline(['echo','"test"']))
b'\\test"\n'

但是

>>> subprocess.check_output(['echo','"test"'],shell=True)
b'\\"test\\"\r\n'
>>> subprocess.check_output(subprocess.list2cmdline(['echo','"test"']),shell=True)
b'\\"test\\"\r\n'

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。