【发布时间】:2020-12-07 06:57:14
【问题描述】:
我想从 Python 脚本运行下一条命令:
strings <FILE NAME> | grep "Version = <VERSION STRING>" > /dev/null
我需要为以下脚本逻辑保存命令返回码和命令输出。
目前我使用了下一个代码:
strings_out = subprocess.Popen(('strings', file), stdout=subprocess.PIPE)
grep_output = subprocess.check_output(('grep', "Version = " + version_string), stdin=strings_out.stdout)
strings_out.wait()
我收到错误
subprocess.CalledProcessError: Command '('grep', 'Version = <VERSION STRING>')' returned non-zero exit status 1
我的假设是 check_output 内存不足。
我使用子流程有什么问题?
【问题讨论】:
-
没有错,只是没有找到任何匹配项。
-
你到底想做什么?只需检查匹配是否存在? (这个其实不需要grep,直接用Python就可以很方便的查看
strings的输出。) -
我希望您需要在上述代码的第一行之后提及
strings_out.wait()。grep命令可能在第一个命令未完成的情况下运行,例如,如果strings命令的输出很大。 -
@alaniwi,你说直接在Python中检查字符串的输出是什么意思?
-
@BaruchLi 您可以将
strings的输出读入python 并使用python 正则表达式(或者甚至只是in进行简单的子字符串搜索)来测试您正在寻找的版本字符串是否存在.
标签: python subprocess