繁体   English   中英

Python子进程和bash sed产生:/ bin / sh:2:语法错误:引号未终止的字符串

[英]Python subprocess and bash sed yielding: /bin/sh: 2: Syntax error: Unterminated quoted string

#!/usr/bin/python
import subprocess
import pip
installed_packages = pip.get_installed_distributions()
installed_packages_list = sorted(["%s==%s" % (i.key, i.version)
    for i in installed_packages])
comms=''.join(installed_packages_list)
filter="sed 's/\,/\n/g' | tr -d '[] ' | sed 's/\x27//g'"
p = subprocess.Popen([filter], stdin=subprocess.PIPE, stdout=subprocess.PIPE, shell=True)
vtime = p.stdin.write(comms)
print(vtime)

我试图变得棘手,编写一个二进制文件,可以运行该二进制文件来生成已安装的Python模块版本的格式化列表。 以下产生了令人困惑的输出:

None

bin/sh: 2: Syntax error: Unterminated quoted string

您的问题是\\ x27是单引号字符,它会被python解释器解释,从而导致您的单引号字符串尽早终止。 尝试添加额外的转义符,例如:

filter="sed 's/\,/\n/g' | tr -d '[] ' | sed 's/\\\'//g'"

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM