Python 3.7.1: Calling grep
with subprocess.Popen to pull errors from a log file. When printing to screen, line breaks \n are not processed.
Example
a = subprocess.Popen(["grep", "ERR", "errors.log"], stdout=subprocess.PIPE)
print(a.stdout.read())
Output
ERR 1 ret: 31113\nERR 2 ret: 35523\nERR 3 ret: 3810 (etc.)
Can't imagine why the line breaks are not processed. I would expect this:
ERR 1 ret: 31113
ERR 2 ret: 35523
ERR 3 ret: 3810
(etc.)
Been combing the 'net for answers, but no luck. Thx :^)
References:
How would I specify a new line in Python?
Python Popen grep
Specify an encoding to decode the subprocess output with. I can't tell you what your errors.log
file is encoded with, but give "utf-8" a try:
a = Popen(["grep", "ERR", "errors.log"], stdout=subprocess.PIPE, encoding='utf-8')
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With