Skip to main content

文件和目录管理

模块提供简单的API来处理远程文件和文件夹。

fabric.contrib.files.append(filename, text, use_sudo=False, partial=False, escape=True, shell=False)

将字符串(或字符串列表) text 附加到 filename

当给出列表时,每个字符串内部都是独立处理的(但是按照给定的顺序)。

如果已在 filename 中找到 text,则不会运行附加,并且将立即返回None。否则,给定的文本被附加到给定的 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 版更改: filenametext 参数的顺序交换为与此模块中的其他函数一致。

在 1.0 版更改: partial kwarg的默认值更改为 False

在 1.4 版更改: 更新了正则表达式相关的转义来尝试和解决各种角落情况。

1.6 新版功能: 添加了 shell 关键字参数。

fabric.contrib.files.comment(filename, regex, use_sudo=False, char='#', backup='.bak', shell=False)

尝试注释掉与 regex 匹配的 filename 中的所有行。

默认注释字符是 #,可以被 char 参数覆盖。

此函数使用 sed 函数,并且将接受与 sed 相同的 use_sudoshellbackup 关键字参数。

comment 将在行的开头添加注释字符,以使行最后看起来像这样:

this line is uncommented
#this line is commented
#   this line is indented and commented

换句话说,注释字符不会“跟随”缩进,因为他们有时做手动插入。他们也不会有尾部空格,除非您指定例如。 char='# '

注解

为了保持被注释掉的行,这个函数将你的 regex 参数括在括号中,所以你不需要。它将确保任何前/后 ^$ 字符正确移动到括号外。例如,调用 comment(filename, r'^foo$') 将导致具有 r'^(foo)$' 的“before”正则表达式(和 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 版更改: filenametext 参数的顺序交换为与此模块中的其他函数一致。

在 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 将隐藏所有输出(包括运行行,stdout,stderr和由文件不存在导致的任何警告),以避免输出杂乱。您可以指定 verbose=True 更改此行为。

fabric.contrib.files.first(*args, **kwargs)

给定一个或多个文件路径,返回找到的第一个,如果不存在则返回None。可以指定传递给 existsuse_sudoverbose

如果给定路径是当前远程主机上的符号链接,则返回True。

如果 use_sudo 为True,将使用 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 设置为空字符串将禁用备份文件创建。

为方便起见,beforeafter 会为您自动转义正斜杠,单引号和括号,因此您不需要指定例如。 http:\/\/foo\.com,而只是使用 http://foo\.com 是好的。

如果 use_sudo 为True,将使用 sudo 而不是 run

shell 参数将最终传递给 run/sudo。它默认为False,以避免许多嵌套级别的引号和反斜杠出现问题。但是,将其设置为True可能有助于使用 ~fabric.operations.cd 包装显式或隐式 sudo 调用。 (cd 由它的本质是一个shell内置的,不是一个独立的命令,所以应该在shell内调用)。

可以使用sed兼容的regex标志指定其他选项 - 例如,要使搜索和替换不区分大小写,请指定 flags="i"g 标志始终指定,无论如何,因此您不需要记住在覆盖此参数时包括它。

1.1 新版功能: flags 参数。

1.6 新版功能: 添加了 shell 关键字参数。

fabric.contrib.files.uncomment(filename, regex, use_sudo=False, char='#', backup='.bak', shell=False)

尝试取消注释符合 regexfilename 中的所有行。

默认注释分隔符是 #,可以被 char 参数覆盖。

此函数使用 sed 函数,并且将接受与 sed 相同的 use_sudoshellbackup 关键字参数。

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_modemode kwargs直接传递到内部 put 调用;有关这两个选项的详细信息,请参阅其文档。

pty kwarg将逐字传递到任何内部 run/sudo 调用,例如用于测试目录,进行备份等的调用。

在 1.1 版更改: 添加了 backupmirror_local_modemode kwargs。

在 1.9 版更改: 添加了 pty kwarg。