当文件中存在文本时,python fabric.contrib.files.contains返回False

当文件中存在文本时,python fabric.contrib.files.contains返回False,python,fabric,Python,Fabric,我的代码如下所示: run("""echo "%s:x:" """ % (username)) if not contains('/etc/passwd', '%s:x:' % (username)): run("useradd --shell /bin/bash --create-home %s" % (username), pty=True) 在第一次运行时,它可以正常工作并创建用户,但在第二次运行时,我得到一个错误,即用户已经存在 [root@vb

我的代码如下所示:

    run("""echo "%s:x:" """ % (username))
    if not contains('/etc/passwd', '%s:x:' % (username)):
        run("useradd --shell /bin/bash --create-home %s" % (username), pty=True)
在第一次运行时,它可以正常工作并创建用户,但在第二次运行时,我得到一个错误,即用户已经存在

    [root@vbox1] out: tom:x:
    [root@vbox1] run: useradd --shell /bin/bash --create-home tom
    [root@vbox1] out: useradd: user 'tom' already exists

我试着用一个\来逃避:这个问题,但我得到了同样的结果。有什么明显的地方我遗漏了吗?

为了完整性,我只想回答我自己的问题。 这是一个版本问题,并以最新版本记录

从文档中:

在版本1.0中更改:交换文件名和文本参数的顺序,以与此模块中的其他函数保持一致