【发布时间】:2014-01-07 22:41:07
【问题描述】:
我正在尝试搜索文本文件并检索包含特定单词集的行。这是我正在使用的代码:
tyrs = subprocess.check_output('grep "^A" %s | grep TYR' % pocket_location, shell = True).split('\n')
当文件至少包含 grep 标识的一行时,这可以正常工作。但是当 grep 没有识别任何行时,grep 返回退出状态 1,我得到以下错误:
Traceback (most recent call last):
File "../../Python_scripts/cbs_wrapper2.py", line 324, in <module>
tyrs = subprocess.check_output('grep "^ATOM" %s | grep TYR' % pocket_location, shell = True).split('\n')
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/subprocess.py", line 544, in check_output
raise CalledProcessError(retcode, cmd, output=output)
subprocess.CalledProcessError: Command 'grep "^ATOM" cbsPrediction_files/1u9c_clean/1u9c_clean_fpocket_out/pockets/pocket0_atm.pdb | grep TYR' returned non-zero exit status 1
如何避免这个问题?如果 grep 没有找到任何东西,我只想让 subprocess.check_output 返回一个空字符串。
谢谢
【问题讨论】:
-
使用
pipes.quote(pocket_location)允许路径包含shell 中的特殊字符,例如空格字符。
标签: python grep subprocess