Форум сайта python.su
Есть простой скрипт
while True: out2 = subprocess.check_output('/root/script1', universal_newlines=True) print(out2) if out2 != "No": print("123") time.sleep(60)
if out2 != "No":
print("123")
Отредактировано gedat (Июль 1, 2022 17:29:26)
Офлайн
потому что результат check_output это не строка, а тип bytes
import subprocess res = subprocess.check_output("echo No", shell=True) print(res, type(res)) print(res == "No\n") res = res.decode().strip() print(res == "No", type(res))
Офлайн
FishHookОднако это строка
потому что результат check_output это не строка, а тип bytes
<class 'str'> 123 NO
import subprocess while True: out2 = subprocess.check_output('/home/angel/script6', universal_newlines=True) print(out2, type(out2)) if out2 != "NO": print("123")
#!/bin/bash echo "NO"
Отредактировано gedat (Июль 1, 2022 18:05:25)
Офлайн
gedat
Сделайте строке стрип, там невидимые символы могут быть
Офлайн
FishHookTraceback (most recent call last):
gedatСделайте строке стрип, там невидимые символы могут быть
Отредактировано gedat (Июль 1, 2022 18:12:47)
Офлайн
Покапался и понял что
universal_newlines=True добавляет новую пустую строчу
А без universal_newlines b'NO\n' и с universal_newlines=None тоже самое
Теперь осталось понять что написать что бы было всё ок
Отредактировано gedat (Июль 1, 2022 18:21:28)
Офлайн
gedat
FishHookа вы делаете что?
Сделайте строке стрип
gedatдекод то нафига, если это и так строка
out2.decode().strip()
Отредактировано FishHook (Июль 1, 2022 18:36:40)
Офлайн
FishHookИзвините, это моя невнимательность.
gedat
Офлайн