bro*_*ter 2 python unix subprocess call
我正在编写一个读取行/字符串的python脚本,调用Unix,使用grep在查询文件中搜索包含该字符串的行,然后打印结果.
from subprocess import call
for line in infilelines:
output = call(["grep", line, "path/to/query/file"])
print output
print line`
Run Code Online (Sandbox Code Playgroud)
当我查看打印到屏幕上的结果时,我将从查询文件中获得匹配字符串的列表,但我也会得到"1"和"0"整数作为输出,并且line永远不会打印到屏幕上.我希望从查询文件中获取与我的字符串匹配的行,然后是我在搜索中使用的字符串.
call返回进程返回码.
如果使用Python 2.7,请使用check_output.
from subprocess import check_output
output = check_output(["grep", line, "path/to/query/file"])
Run Code Online (Sandbox Code Playgroud)
如果在此之前使用任何东西,请使用沟通
import subprocess
process = subprocess.Popen(["grep", line, "path/to/query/file"], stdout=subprocess.PIPE)
output = process.communicate()[0]
Run Code Online (Sandbox Code Playgroud)
这将打开stdout的管道,您可以通过通信阅读.如果你也想要stderr,你也需要添加"stderr = subprocess.PIPE".
这将返回完整输出.如果要将其解析为单独的行,请使用split.
output.split('\n')
Run Code Online (Sandbox Code Playgroud)
我相信Python会为你处理行结束转换,但是因为你正在使用grep我会假设你在Unix上的行结尾是\n无论如何.
http://docs.python.org/library/subprocess.html#subprocess.check_output
| 归档时间: |
|
| 查看次数: |
10359 次 |
| 最近记录: |