Sarge
基本信息
基本使用
sarge.capture_stdout
捕获标准输出
In [81]: p = capture_stdout("ls -a / | tail -n 1")
In [82]: p.commands
Out[82]: [Command('ls -a /'), Command('tail -n 1')]
In [83]: p.returncode
Out[83]: 0
In [84]: p.returncodes
Out[84]: [0, 0]
In [85]: p.stdout
Out[85]: Capture-2
In [86]: p.stdout.threads
Out[86]: [<Thread(Thread-3355, stopped daemon 123145311330304)>]
In [87]: p.stdout.text
Out[87]: u'\u7528\u6237\u4fe1\u606f\n'
In [88]: print p.stdout.text
用户信息
sarge.capture_both 是 stderr\stdout 的合并
In [121]: from sarge import capture_stdout, run, capture_both
In [122]: a = capture_both("ls -a /ddd | tail -n 2")
In [123]: a.stderr
Out[123]: Capture-7
In [124]: a.stderr.text
Out[124]: u'ls: /ddd: No such file or directory\n'
In [125]: a.stdout.text
Out[125]: u''
In [126]: a.returncodes
Out[126]: [1, 0]
sarge.run
In [91]: k = run("ls -a / | tail -n 2")
virtualenvs
用户信息
In [93]: print k.stdout
None
In [94]: print k.returncodes
[0, 0]
# Capture 可以捕获多个命令的输出
>>> from sarge import run, Capture
>>> p = run('echo foo; echo bar; echo baz', stdout=Capture())
>>> p.stdout.readline()
'foo\n'
>>> p.stdout.readline()
'bar\n'
>>> p.stdout.readline()
'baz\n'
>>> p.stdout.readline()
''
# input 使用
In [81]: p = run('cat', input='foo')
foo
异步执行
>>> from sarge import run, Capture
>>> cmd = 'echo foo & (sleep 2; echo bar) & (sleep 10; echo baz)'
>>> p = run(cmd, stdout=Capture(), async=True) # returns immediately
>>> p.close() # wait for completion[等待命令全部执行完成]
>>> p.stdout.readline()
'foo\n'
>>> p.stdout.readline()
'baz\n'
>>> p.stdout.readline()
'bar\n'
>>>
网友评论