Сравнение строк Python - PullRequest
       13

Сравнение строк Python

4 голосов
/ 25 марта 2010

У меня есть функция python, которая вызывает подпроцесс для сценария оболочки, который выводит «true» или «false». Я сохраняю вывод из subprocess.communicate() и пытаюсь сделать return output == 'true', но он возвращает False каждый раз. Я не слишком знаком с Python, но, читая о сравнении строк, вы можете сравнить строки, используя ==,! = И т. Д.

Вот код:

def verifydeployment(application):
    from subprocess import Popen, PIPE
    import socket, time

    # Loop until jboss is up.  After 90 seconds the script stops looping; this
    # causes twiddle to be unsuccessful and deployment is considered 'failed'.
    begin = time.time()
    while True:
        try:
            socket.create_connection(('localhost', 8080))
            break
        except socket.error, msg:
            if (time.time() - begin) > 90:
                break
            else:
                continue

    time.sleep(15)  # sleep for 15 seconds to allow JMX to initialize

    twiddle = os.path.join(JBOSS_DIR, 'bin', 'twiddle.sh')
    url = 'file:' + os.path.join(JBOSS_DIR, 'server', 'default', 'deploy', os.path.basename(application))

    p = Popen([twiddle, 'invoke', 'jboss.system:service=MainDeployer', 'isDeployed', url], stdout=PIPE)
    isdeployed = p.communicate()[0]

    print type(isdeployed)
    print type('true')
    print isdeployed
    return isdeployed == 'true'

Вывод:

<type 'str'> # type(isdeployed)
<type 'str'> # type('true')
true         # isdeployed

но False всегда возвращается. Я тоже попробовал return str(isdeployed) == 'true'.

Ответы [ 2 ]

8 голосов
/ 25 марта 2010

Вы уверены, что нет завершающего символа перевода строки, поэтому ваша строка содержит "true\n"? Это кажется вероятным.

Вы можете попробовать вернуть isdeployed.startswith("true") или какой-нибудь зачистки.

6 голосов
/ 25 марта 2010

Вы пытались позвонить

isdeployed.strip()

до сравнения

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...