问题描述
为什么在 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 (将#修改为@)