On 07/09/18 13:55, catanaang...@gmail.com wrote:
HI! I need help putting the output from terminal in a csv file. I work on linux 
and I have python 2.7.15. I am running a python program which also runs some 
shell scripts.

I need to capture the output from the .sh scripts and put it nicely in a csv table. I am 
using "commands.getoutput('bash example.sh')" to capture the output of the 
scripts (I can use subprocess too if needed).

The outputs looks something like this:
In case of an error
{
    "error" : {
       "body" : "The requested device is currently not online.
       "detail" : "Make sure to connect the device",
       "event" : 123456,
       "header" : "Device Unavailable (123456)"
    }
}
And in case of a good output it look similar but has "status :0" instead of 
event and ofc it does say that it passed the test.

I need to export the results of the .sh tests in a csv file with my .py program.
The boss expects a table with 3 columns. The first one with The title TEST which has the 
name of the tests (.sh scripts). The 2nd with PASS/FAIL (this is determined by the 
"status" : 0 output for some tests and with a number between 1 and 4000 for 
others (i used regex for this, but I struggle a bit here too) and the 3rd one which 
returns the Value ( 0 in case status is 0 or the number between 1 and 4000 for the other 
tests).

I really need some ideas, I struggle for 3 days already using regex, commands, 
subprocess and watching tutorials.

I just can't solve this yet, I really need some ideas.

From what you've said above, your basic problem is that you need to parse the output looking for lines containing '"status": <n>' where <n> is some number.

Let's assume that you have run one of the shell scripts and captured its output into a string. The first thing to do is to split the output into lines, which you can do with the "split()" string method. Then check each line in turn. If it contains a colon it may be what you want. "split()" the line at the colon and look at the first half. Once you have "strip()"ed off the spaces at the beginning and the end, is it "status"? If so, you've got your pass and the VALUE you want is in the second half.

I hope that helps.

--
Rhodri James *-* Kynesim Ltd
--
https://mail.python.org/mailman/listinfo/python-list

Reply via email to