Python Forum
Capture grep output to a variable which includes another variable
Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Capture grep output to a variable which includes another variable
#1
I have set a variable strFileExt to a file path/name: /var/log/error.log.112119

I would now like to grep that file, capturing output to a second variable. If there is no output (text does not exist) I will exit. If it does return output, I will then move on to perform other things with this file.

I have tried many variations of the following to no success:

strFile = os.popen('grep -rlw "reported errors in the" + strFileExt+').read()
Is there a way to set this strFile variable using the grep command which includes the first set variable of strFileExt ?

Thanks in advance.
Reply
#2
I would suggest to use subprocess.run command, e.g.

import subprocess
what = "what"
where = "/home/yourfolder/yourfile"
p = subprocess.run(["grep", what, where], capture_output=True)   
p.stdout  # is what you need
Reply
#3
Scidam, that looked promising, but getting error. Also, had to change subprocess.run to subprocess.call due to being on Python 2.7.

Here's my code:
#!/usr/bin/env python
# -*- coding: utf-8 -*-

strFileExt=""
strFile=""


# import required modules
import datetime
import os
import subprocess
now = datetime.datetime.now()

# for testing timie format
# print (now.strftime(("%m%d%y"))
#print (now.strftime("%m%d%y"))
strFileExt = "/var/logs/error.log."+(now.strftime("%m%d%y"))
print strFileExt

what = " reported errors in the "
where = strFileExt
print what
print where

p = subprocess.call(["grep -rlw ", what, where])
strFile=p.stdout
print strFile
whether I use p.stdout or try to stuff it in a variable as above, the error is the same, shown below:

/var/logs/error.log.112219
 reported errors in the
/var/logs/error.log.112219
Traceback (most recent call last):
  File "./integ_recheck.py3", line 25, in <module>
    p = subprocess.call(["grep -rlw ", what, where])
  File "/usr/lib64/python2.7/subprocess.py", line 524, in call
    return Popen(*popenargs, **kwargs).wait()
  File "/usr/lib64/python2.7/subprocess.py", line 711, in __init__
    errread, errwrite)
  File "/usr/lib64/python2.7/subprocess.py", line 1327, in _execute_child
    raise child_exception
OSError: [Errno 2] No such file or directory
Reply
#4
(Nov-22-2019, 02:22 PM)kdefilip2 Wrote: Scidam, that looked promising, but getting error.
You should split each command and pass these commands as a list, e.g.
p = subprocess.call(["grep", "-rlw", what, where])
Reply
#5
Hi Scidam,

Thanks for all your help. The only way I could get this working was with the following:
p = Popen(["grep", "-wl", what, where], stdout=True, stderr=True)
p.communicate()[0]
It now returns proper grep output, i.e., when found it returns the filename, when not found, it returns nothing.

I now need to find a way to compare the result:
IF Found
do a bunch of other stuff
ELSE
Exit

But I guess that will be for another post.

Thanks again.

kd
Reply


Possibly Related Threads…
Thread Author Replies Views Last Post
Question Variable not defined even though it is CoderMerv 3 99 7 hours ago
Last Post: Larz60+
  optimum chess endgame with D=3 pieces doesn't give an exact moves_to_mate variable max22 1 192 Mar-21-2024, 09:31 PM
Last Post: max22
  unbounded variable akbarza 3 428 Feb-07-2024, 03:51 PM
Last Post: deanhystad
  Variable for the value element in the index function?? Learner1 8 546 Jan-20-2024, 09:20 PM
Last Post: Learner1
  Variable definitions inside loop / could be better? gugarciap 2 375 Jan-09-2024, 11:11 PM
Last Post: deanhystad
  working directory if using windows path-variable chitarup 2 680 Nov-28-2023, 11:36 PM
Last Post: chitarup
  Variable is not defined error when trying to use my custom function code fnafgamer239 4 515 Nov-23-2023, 02:53 PM
Last Post: rob101
  How to create a variable only for use inside the scope of a while loop? Radical 10 1,524 Nov-07-2023, 09:49 AM
Last Post: buran
  Calling functions by making part of their name with variable crouzilles 4 747 Nov-02-2023, 12:25 PM
Last Post: noisefloor
  dynamic variable name declaration in OOP style project problem jacksfrustration 3 717 Oct-22-2023, 10:05 PM
Last Post: deanhystad

Forum Jump:

User Panel Messages

Announcements
Announcement #1 8/1/2020
Announcement #2 8/2/2020
Announcement #3 8/6/2020