python子进程包装器
pbs的Python项目详细描述
PBS现在已成为sh.
============
PBS将不再受支持。请在此处升级:
http://pypi.python.org/pypi/sh
,并使用以下命令迁移现有代码:
``python
``import sh as pbs
````
**
python函数。pbs通过提供bash(简单的命令调用,简单的管道)的强大功能和灵活性,帮助您在python中编写shell脚本。命令在python中实现。
端口ifconfig
print ifconfig("eth0")
```
这对于
名称中有奇怪字符的程序或不在
您的$path中的程序很有用:
``python
import pbs
ffmpeg=pbs.command("/usr/bin/ffmpeg")
ffmpeg(电影文件)
``
雷普尔默认情况下,这就像一个星型导入(因此所有系统程序都将立即可用为函数):
$>;python pbs.py
**只需像调用函数一样调用程序名:**
``python
/>请注意,这些不是python函数,而是通过解析路径在系统上动态运行二进制
命令,这与bash非常相似。
这样,系统上的所有程序都可以在python中轻松使用
。
这将转换为命令名,后跟属性名:
``python
from pbs import git
以及(如git、svn、time、sudo等)。
请参阅"烘焙"以了解其高级用法。
uckduckgo.com/-o page.html--silent"
curl("http://duckduckgo.com/",o="page.html",silent=true)
--shell=/bin/bash——没有create home"
adduser("amoffat",system=true,shell="/bin/bash",no_create_home=true)
n
按最大文件对该目录进行排序
打印排序(du(glob("*"),"-sb"),"-rn")
e.
这是通过特殊的"u out"和"u err"关键字参数完成的。可以传递
文件名或文件对象作为参数值。当一个已经
传递现有文件时,文件的内容将被覆盖。
``python
ls(_out="files.list")
ls("不存在",_err="error.txt")
`````
pbs还可以将错误输出流重定向到标准输出流,
使用特殊的关键字argument.
\sudo和with contexts
使用此
的常用命令可能是"sudo"或"fakeroot":
``python
with sudo:
print ls("/root")
````
.
这让命令知道它是从具有上下文的中运行的,因此
它可以正常运行。
``python
with sudo(p=">;",u with=true):
print ls("/root")
```
ue keyword
参数:
`` python
p.wait()
打印"…3秒后"
````
`` python
p=wc(curl("http://github.com/",silent=true,_bg=true),"--bytes")
print"立即打印!"
print"github的字节数:d"%int(p)懒洋洋地完成
```
ound进程是希望直接与终端的默认stdout和stdin交互的进程。换句话说,这些是
进程,您不希望将其输出作为调用的返回值返回。例如,打开一个文本编辑器:
`` python
vim(file_to_edit)
````
这将被阻止,因为pbs将尝试将命令的输出聚合到python,而不向屏幕显示任何内容。
解决方案是"_fg"特殊关键字arg:
`` python
vim(file_to_edit,_fg=true)
````
这将按预期打开vim并让您按预期使用它,所有输入都来自键盘,输出都将显示在屏幕上。
foregro的返回值und进程是一个空字符串。
叮叮声。
`` python
打印哪个("python")"/usr/bin/python"
打印哪个("ls")"/bin/ls"
打印哪个("some_command")none
如果不是,打印哪个("supervisortl"):apt_get("install","supervisor","y")
````
曼德。这与stdlib functools.partial包装类似。一个例子可以说是大量的:
``python
from pbs import ls
print ls"/usr/bin/ls-la"
传递传递到"bake"中的所有参数。
如果将其与pbs import ssh中的属性
``python
access结合在一起,将获得**真正有趣的**在服务器上调用whoami。如果您只运行几个命令,那么这样做很乏味。
iam1=ssh("myserver.com","-p 1393","whoami")
myserver=ssh.bake("myserver.com",p=1393)
打印myserver"/usr/bin/ssh myserver.com-p 1393"
解析为"/usr/bin/ssh myserver.com-p1393 whoami"
iam2=myserver.whoami()
assert(iam1==iam2)true!
```
既然"myserver"可调用表示一个烘焙的ssh命令,那么您就可以轻松地调用服务器上的任何内容:
``python
解析为"/usr/bin/ssh myserver.com-p 1393 tail/var/log/dumb-daemon.log-n 100"
print myserver.tail("/var/log/dumb-daemon.log",n=100)
```
import os
os.environ["test"]="123"
````
捕获特定的返回代码,或通过基类error return code捕获所有错误返回代码
:
``python
尝试:打印ls("/some/non-existant/folder")
,errorreturncode除外2:
print"文件夹不存在!"
创建_folder()
除了errorreturncode:
打印"未知错误"
退出(1)
````
例如,这将不起作用:
```python
from pbs import du
print du("*"
````
print du(glob("*")
```
do_something()
```
您可以通过"argv"访问整个argparse/optparse友好的命令行参数列表。这是灵活性的建议:
``python
import argparse
parser=argparse.argumentparser(prog="prog")
parser.add_argument("-x",default=3,type=int)
ns=parser.parse_args(argv)
print ns.x
```
处理下划线-短划线转换。例如,如果希望
调用apt get:
``python
apt get("install","mplayer",y=true)
````
,然后再次搜索。如果仍然找不到该命令,则会引发
commandnotfound异常。
command类将程序的完整路径作为字符串:
``python
p27=command(which("python2.7"))
print p27("-h")
````
command wrapper对于不在标准路径中的命令也很有用:
``python
script=command("/tmp/temporary script.sh"
print script()
```
非标准退出代码
通常,如果命令返回的退出代码不是0,PBS会基于该退出代码引发异常
。但是,如果您确定错误代码
是正常的,并且希望在PBS不引发
异常的情况下检索命令的输出,则可以使用"\u ok_code"特殊参数来抑制异常:
``python
output=pbs.ls("dir_存在","dir_不存在",_好的,在上面的例子中,
```
告诉
命令2是"确定"退出代码,因此不要引发异常。
< BR>
============
PBS将不再受支持。请在此处升级:
http://pypi.python.org/pypi/sh
,并使用以下命令迁移现有代码:
``python
``import sh as pbs
````
**
端口ifconfig
print ifconfig("eth0")
```
这对于
名称中有奇怪字符的程序或不在
您的$path中的程序很有用:
``python
import pbs
ffmpeg=pbs.command("/usr/bin/ffmpeg")
ffmpeg(电影文件)
``
雷普尔默认情况下,这就像一个星型导入(因此所有系统程序都将立即可用为函数):
$>;python pbs.py
**只需像调用函数一样调用程序名:**
``python
/>请注意,这些不是python函数,而是通过解析路径在系统上动态运行二进制
命令,这与bash非常相似。
这样,系统上的所有程序都可以在python中轻松使用
。
这将转换为命令名,后跟属性名:
``python
from pbs import git
以及(如git、svn、time、sudo等)。
请参阅"烘焙"以了解其高级用法。
uckduckgo.com/-o page.html--silent"
curl("http://duckduckgo.com/",o="page.html",silent=true)
--shell=/bin/bash——没有create home"
adduser("amoffat",system=true,shell="/bin/bash",no_create_home=true)
n
按最大文件对该目录进行排序
打印排序(du(glob("*"),"-sb"),"-rn")
e.
这是通过特殊的"u out"和"u err"关键字参数完成的。可以传递
文件名或文件对象作为参数值。当一个已经
传递现有文件时,文件的内容将被覆盖。
``python
ls(_out="files.list")
ls("不存在",_err="error.txt")
`````
pbs还可以将错误输出流重定向到标准输出流,
使用特殊的关键字argument.
\sudo和with contexts
使用此
的常用命令可能是"sudo"或"fakeroot":
``python
with sudo:
print ls("/root")
````
.
这让命令知道它是从具有上下文的中运行的,因此
它可以正常运行。
``python
with sudo(p=">;",u with=true):
print ls("/root")
```
ue keyword
参数:
`` python
p.wait()
打印"…3秒后"
````
`` python
p=wc(curl("http://github.com/",silent=true,_bg=true),"--bytes")
print"立即打印!"
print"github的字节数:d"%int(p)懒洋洋地完成
```
ound进程是希望直接与终端的默认stdout和stdin交互的进程。换句话说,这些是
进程,您不希望将其输出作为调用的返回值返回。例如,打开一个文本编辑器:
`` python
vim(file_to_edit)
````
这将被阻止,因为pbs将尝试将命令的输出聚合到python,而不向屏幕显示任何内容。
解决方案是"_fg"特殊关键字arg:
`` python
vim(file_to_edit,_fg=true)
````
这将按预期打开vim并让您按预期使用它,所有输入都来自键盘,输出都将显示在屏幕上。
foregro的返回值und进程是一个空字符串。
叮叮声。
`` python
打印哪个("python")"/usr/bin/python"
打印哪个("ls")"/bin/ls"
打印哪个("some_command")none
如果不是,打印哪个("supervisortl"):apt_get("install","supervisor","y")
````
曼德。这与stdlib functools.partial包装类似。一个例子可以说是大量的:
``python
from pbs import ls
传递传递到"bake"中的所有参数。
如果将其与pbs import ssh中的属性
``python
access结合在一起,将获得**真正有趣的**在服务器上调用whoami。如果您只运行几个命令,那么这样做很乏味。
iam1=ssh("myserver.com","-p 1393","whoami")
myserver=ssh.bake("myserver.com",p=1393)
打印myserver"/usr/bin/ssh myserver.com-p 1393"
解析为"/usr/bin/ssh myserver.com-p1393 whoami"
iam2=myserver.whoami()
assert(iam1==iam2)true!
```
既然"myserver"可调用表示一个烘焙的ssh命令,那么您就可以轻松地调用服务器上的任何内容:
``python
解析为"/usr/bin/ssh myserver.com-p 1393 tail/var/log/dumb-daemon.log-n 100"
print myserver.tail("/var/log/dumb-daemon.log",n=100)
```
import os
os.environ["test"]="123"
````
捕获特定的返回代码,或通过基类error return code捕获所有错误返回代码
:
``python
尝试:打印ls("/some/non-existant/folder")
,errorreturncode除外2:
print"文件夹不存在!"
创建_folder()
除了errorreturncode:
打印"未知错误"
退出(1)
````
例如,这将不起作用:
```python
from pbs import du
print du("*"
````
print du(glob("*")
```
do_something()
```
您可以通过"argv"访问整个argparse/optparse友好的命令行参数列表。这是灵活性的建议:
``python
import argparse
parser=argparse.argumentparser(prog="prog")
parser.add_argument("-x",default=3,type=int)
ns=parser.parse_args(argv)
print ns.x
```
处理下划线-短划线转换。例如,如果希望
调用apt get:
``python
apt get("install","mplayer",y=true)
````
commandnotfound异常。
command类将程序的完整路径作为字符串:
``python
p27=command(which("python2.7"))
print p27("-h")
````
command wrapper对于不在标准路径中的命令也很有用:
``python
script=command("/tmp/temporary script.sh"
print script()
```
非标准退出代码
通常,如果命令返回的退出代码不是0,PBS会基于该退出代码引发异常
。但是,如果您确定错误代码
是正常的,并且希望在PBS不引发
异常的情况下检索命令的输出,则可以使用"\u ok_code"特殊参数来抑制异常:
``python
output=pbs.ls("dir_存在","dir_不存在",_好的,在上面的例子中,
```
告诉
命令2是"确定"退出代码,因此不要引发异常。
< BR>