Я пытаюсь создать скрипт, который выполняет некоторый поиск grep в моих журналах и печатает результаты. Я пытаюсь использовать Посланника, потому что это проще, чем подпроцесс, но когда я выполняю команду grep, он возвращает мне ошибку такого каталога o o.grep Нет такого файла или каталога с envoy.run
реж структура легко:
- . # Корень сценария
- test.py файл # скрипт
- web_logs/Журнал/# реж который содержит журнал для поиска в
Мой test.py легко:
import envoy
def test(value):
search = "grep 'cv="+str(value)+"' ./web_logs/log/log_*"
print(search) #check of the search string
r = envoy.run(search)
print(r.status_code, r.std_out, r.std_err)#check of the command
response = r.std_out
if __name__ == "__main__":
test(2)
Выход является:
grep 'cv=2' ./web_logs/log/log_*
(2, '', 'grep: ./web_logs/log/log_*: No such file or directory\n')
Если я выполнить ту же команду:
grep 'cv=2' ./web_logs/log/log_*
Я могу найти нахождение строки «cv = 2» в файлах журнала.
Где ошибка?
Update после ответа проблемы в использовании *, что посланник не может взорваться без использования модуля Глобы, так что я с помощью подпроцесса, как это и я стараюсь учиться лучше с помощью модуля Глобы для улучшения посланца.
Новый код я использовал:
import subprocess
def test(value):
search = "grep 'cv="+str(value)+"' ./web_logs/log/log_*"
print(search) #check of the search string
proc = subprocess.check_output(search, shell=True)
print proc.split('\n')
if __name__ == "__main__":
test(2)
Он работает, если вы измените 'c = 2' на термин, который не содержит знак равенства? Я не знаком с «посланником», так что это определенно выстрел в темноте. – tripleee