2012-06-10 2 views
0

Мой код выглядит следующим образом:питона fabric.contrib.files.contains возвращает значение False, если текст присутствует в файле

run("""echo "%s:x:" """ % (username)) 
    if not contains('/etc/passwd', '%s:x:' % (username)): 
     run("useradd --shell /bin/bash --create-home %s" % (username), pty=True) 

При первом запуске, он отлично работает и создать пользователя, а на втором прогоне я получить сообщение о том, что пользователь уже существует.

[[email protected]] out: tom:x: 
    [[email protected]] run: useradd --shell /bin/bash --create-home tom 
    [[email protected]] out: useradd: user 'tom' already exists 

Я попытался убежать: с \, но я получаю те же результаты. Есть ли что-то очевидное, что мне не хватает?

ответ

1

Просто хочу ответить на мой вопрос для полноты. Это проблема с версией и документирована с последней версией.

Из документов:

Изменено в версии 1.0: обменивали порядок аргументов имен файлов и текста, чтобы быть совместимыми с другими функциями в этом модуле.