python sarge 总结

2017-10-14  本文已影响0人  讷讷01

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'
>>>

sarge.get_stderr\sarge.get_stdout\sarge.get_both

上一篇 下一篇

猜你喜欢

热点阅读