Python: оболочка со значением grep, хранящимся в переменной, всегда добавляет дополнительную строку - PullRequest
2 голосов
/ 11 февраля 2020

Я забыл добавить, я должен вызвать shell из python, у меня есть файл

cat file.txt
b
bb
bbb

Печать, если существует только "bb", в противном случае ошибка

str=subprocess.check_output('grep bb file.txt || echo 2',shell=True)
print 'str='+str  # This always str=bb and an extra line
if (str == 'bb'):   # Wish  better way like str == '1'
  print "Pass"
elif(str == '2') :
  print "Fail"

Я думаю должен быть лучший способ справиться.

1 Ответ

0 голосов
/ 11 февраля 2020

Попробуйте открыть файл и прочитать его либо построчно, либо целиком:

  • В целом
    with open("file.txt", "r") as file:
        data = file.read()
        if "bbb" in data:
            print("Pass")
        else:
            print("Fail")
  • Или построчно
    with open("file.txt", "r") as file:
        line = file.readline()
        while line:
            if "bbb" == line:
                print("Pass")
                break
            line = file.readline()
        print("Fail")

РЕДАКТИРОВАТЬ: Я видел, как вы отредактировали свой вопрос. Оператор if может измениться, и это не повлияет на программу, поэтому не имеет значения, что вы проверяете (например, «bbb» или «11»). Также проверка строка за строкой является лучшим и быстрым вариантом.

...