出于某些原因,我正在将bash脚本转换为python。
Python的功能更强大,然而,像这样编写简单的bash代码要困难得多:
MYVAR = `grep -c myfile`在python中,我首先要定义的反引号函数可能是:
def backquote(cmd,noErrorCode=(0,),output=PIPE,errout=PIPE):
p=Popen(cmd, stdout=output, stderr=errout)
comm=p.communicate()
if p.returncode not in noErrorCode:
raise OSError, comm[1]
if comm[0]:
return comm[0].rstrip().split('\n')这太无聊了!
有没有Python的味道(IPython ?)在哪里可以很容易地产生进程并返回输出?
发布于 2011-03-21 19:55:35
在Python2.7或更高版本中,有一个subprocess.check_output(),它基本上可以做你想做的事情。
发布于 2011-03-21 19:57:14
os.subprocess documentation介绍了如何替换反引号:
output=`mycmd myarg`
==>
output = Popen(["mycmd", "myarg"], stdout=PIPE).communicate()[0]发布于 2011-03-21 19:54:42
定义了这个backquote函数后,您可以从程序和交互式shell (IPython等)中一次又一次地调用它。
在Python中没有直接使用这种“反引号”的方法,这是有充分理由的。Python以其可读性而闻名,而在该语言中具有这样的结构会导致无法阅读的“脚本”代码。话虽如此,对于返回子进程输出的函数来说,backquote可能不是最具描述性的名称。
https://stackoverflow.com/questions/5377229
复制相似问题