文件和目录管理¶
提供远程文件和文件夹操作 API 的简单模块。
-
fabric.contrib.files.append(filename, text, use_sudo=False, partial=False, escape=True, shell=False)¶ 添加字符串(列表)
text至filename。如果提供的是一个 list,其中的每一个字符串都将将会(按顺序)独立处理。
如果
filename中已存在text,将不会执行添加并立刻返回 None,反之则将给定text添加到filename的末尾,比如echo '$text' >> $filename。用于测试
text是否已经存在,默认是整行匹配,例如:^<text>$。因为在“向文件的结尾增添一行”的使用情况下,这是最合适的选择。你可以指定partial=True来覆盖它,并强制部分搜索(比如^<text>)。由于
text是包裹在单引号中的,因此会自动将其中的单引号使用反斜线转译,可以使用escape=False关闭该选项。如果
use_sudo设置为 True,则使用sudo而不是run。shell参数最终会传递给run/sudo,具体描述和~fabric.contrib.sed一样,请查看它的文档详细了解。在 0.9.1 版更改: 新增关键字参数
partial。在 1.0 版更改: 修改了
filename和text参数的顺序与模块中的其它函数保持一致。在 1.0 版更改: 修改关键字参数
partial的默认值为False。在 1.4 版更改: 更新了转译相关的正则表达式以修复众多边界情况下的问题。
1.6 新版功能: 新增关键字参数
shell。
-
fabric.contrib.files.comment(filename, regex, use_sudo=False, char='#', backup='.bak', shell=False)¶ 将
filename文件中所有匹配regex的行全部注释掉。默认的注释字符是
#,可以使用char参数覆盖这项设置。这个函数调用了
sed函数,因此和sed一样接受use_sudo、shell和backup等关键字参数。comment会在行首添加注释符号,函数的结果大概会是这个样子的:this line is uncommented #this line is commented # this line is indented and commented
换句话说,注释操作并不“遵循”手写代码时的缩进规范,注释符后面也不会跟上空白,除非手动指定,比如:
char='# '。注解
为了保护被注释的代码,这个函数会将
regex参数包裹在园括号中,并不需要你手动处理。同时会确保开始的^以及结尾的$字符会被移除在括号之外。例如:调用comment(filename, r'^foo$')会产生一个 “before” 参数为r'^(foo)$'``("after" 参数为 ``r'#\1')的sed调用。1.5 新版功能: 新增关键字参数
shell。
-
fabric.contrib.files.contains(filename, text, exact=False, use_sudo=False, escape=True, shell=False)¶ 如果
filename文件中包含text(可能是正则表达式)则返回 True。默认情况下,这个函数会对代码行进行部分匹配(例如
text只包含在某一行文字中的情况),指定exact=True可以确保只有某一行完全匹配text才会返回 True。这个函数会影响远程
egrep的行为(可能无法弯曲符合 Python 正则表达式语法),默认情况下还会忽略env.shell的封装。如果
use_sudo设置为 True,则使用sudo而不是run。如果
escape设置为 False,则不会进行任何正则表达式相关的转译(会覆盖exact自动添加^/$的行为)。shell参数最终会传递给run/sudo,具体描述和~fabric.contrib.sed一样,请查看它的文档详细了解。在 1.0 版更改: 修改了
filename和text参数的顺序与模块中的其它函数保持一致。在 1.4 版更改: 更新了转译相关的正则表达式以修复众多边界情况下的问题。
在 1.4 版更改: 新增关键字参数
escape。1.6 新版功能: 新增关键字参数
shell。
-
fabric.contrib.files.exists(path, use_sudo=False, verbose=False)¶ 如果当前远程主机中存在给定的目录则返回 True。
如果
use_sudo设置为 True,则使用sudo而不是run。默认情况下,
exists会隐藏所有输出(包括 run 那一行、stdout、stderr 以及文件不存在引起的的任何警告)以避免混乱的输出。设置verbose=True可以修改其行为。
-
fabric.contrib.files.first(*args, **kwargs)¶ 返回给定路径中第一个找到文件的那个,如果都找不到则返回 None。
use_sudo和verbose参数将会传递给exists。
-
fabric.contrib.files.is_link(path, use_sudo=False, verbose=False)¶ 如果当前远程主机中给定路径是一个软链接则返回 True。
如果
use_sudo值为真则使用sudo而非run。默认情况下,
is_link会隐藏所有输出,设置verbose=True可以修改该设置。
-
fabric.contrib.files.sed(filename, before, after, limit='', use_sudo=False, backup='.bak', flags='', shell=False)¶ 使用给定正则表达式对
filename做搜索及替换操作。和
sed -i<backup> -r -e "/<limit>/ s/<before>/<after>/<flags>g" <filename>等价。设置backup为空字符串可以阻止备份文件的生成。方便起见,
before和after将会自动转译斜线、单引号和圆括号,这样你就可以不必把http://foo\.com写成http:\/\/foo\.com。如果
use_sudo设置为 True,则使用sudo而不是run。shell参数最终会传递给run/sudo。其默认值为 False,这样就不会造成很多引号和反斜线相互嵌套的问题。不过,设置为 True 在使用~fabric.operations.cd隐式或显式地包裹sudo调用时会很方便。(cd本质上是基于 shell 的,而非独立的命令,因此需要在 shell 中调用。)其它选项可能是出于兼容 sed 标记的目的 – 例如:设置
flags="i"可以插入式地搜索和替换。标记g意味着不停止执行,so you do not need to remember to include it when overriding this parameter.1.1 新版功能:
flags参数。1.6 新版功能: 新增关键字参数
shell。
-
fabric.contrib.files.uncomment(filename, regex, use_sudo=False, char='#', backup='.bak', shell=False)¶ 将文件
filename中匹配regex的所有行取消注释。默认注释界定符是
#,可以使用char参数覆盖该设置。这个函数调用了
sed函数,因此和sed一样接受use_sudo、shell和backup等关键字参数。uncomment会删除紧跟在注释字符后面的空格,如果存在的话,并不会影响其之前的空格,例如:# foo会变成foo(空格被一起删去了),不过 `` # foo`` 会变成 `` foo`` (只删除了注释字符后的空格,前面的 4 个空格并没有)。在 1.6 版更改: 新增关键字参数
shell。
-
fabric.contrib.files.upload_template(filename, destination, context=None, use_jinja=False, template_dir=None, use_sudo=False, backup=True, mirror_local_mode=False, mode=None, pty=None)¶ 渲染一个模版文本文件,并将结果上传至远程主机。
返回内部
put调用的结果,详细信息请访问其文档。filename应当是一个文本文件的地址,可以包含 Python 插入格式 ,并结合上下文字典context来渲染(如果存在的话)。如果
use_jinja被设置为 True,同时你已经安装了 Jinja2 模板库,将会使用 Jinja 来渲染该模板。默认会从用户的运行目录寻找模板,除非指定了template_dir。生成的文件将会上传至远程路径
destination。如果已有同名文件存在在远程,远程文件将会以.bak后缀重命名,除非指定backup=False。默认情况下,将会以登录用户身份复制到
destination目录,指定use_sudo=True可以强制使用sudo复制。关键字参数
mirror_local_mode和mode直接用于内部put的调用,详细操作请参阅其文档。关键字参数
pty将会被应用到所有run/sudo内部调用,例如用于文件路径测试、设置备份等等。在 1.1 版更改: 新增关键字参数
backup、mirror_local_mode以及mode。在 1.9 版更改: 新增
pty关键字参数。