[Tutor] Executing a command from a specific directory

Dave Angel davea at ieee.org
Wed Sep 16 20:35:26 CEST 2009


(Don't top-post;  it makes reading the thread quite confusing)

Ansuman Dash wrote:
> Hi,
>
> Thank you very much for the quick response.
>
> Code is working fine.
>
> Now I am trying to validate that the command is executed successfully.
> I have written following script to validate the log file which is created
> after running the command.
>
> ========================================================
>     if os.access("C:/Python25/Own.log", os.F_OK):
>         f = open("C:/Python25/Own.log")
>         time.sleep(30)
>         try:
>             for line in f.readlines():
>                 a=line
>
>             if "Request timed out.." not in a:
>                 print("Ping is not successful.")
>                 pLogger.info("Ping is not successful.")
>             else:
>                 print ("Ping is successful.")
>                 pLogger.info("Ping is successful.")
>
>         finally:
>             f.close()
>     else:
>         pLogger.info("File doesn't exist")
> =========================================================
>
> But it is not working, even if ping is successfully it is printing "Ping is
> not successful.". Can you please point out where I am making mistake.
>
> Thanks,
> AD
>
>
> On Wed, Sep 16, 2009 at 12:55 PM, Patrick Sabin
> <patrick.just4fun at gmail.com>wrote:
>
>   
>> Ansuman Dash schrieb:
>>
>>
>>     
>>> Hello Everybody,
>>>
>>> In Python scripting, how can I execute a command (which can be run from
>>> spcific directory) and then retrieve the result (after executing the command
>>> it give the command is executed successfull or not), so that I can validate
>>> it.
>>>
>>> Thanks,
>>> AD
>>>
>>>
>>>
>>>       
>> import os
>> import subprocess
>>
>> os.chdir('/your/directory')
>> p = subprocess.Popen("ls -l", shell=True, stdout=subprocess.PIPE)
>> out = p.stdout.read()
>> print out
>>
>> - Patrick
>>
>> _______________________________________________
>> Tutor maillist  -  Tutor at python.org
>> To unsubscribe or change subscription options:
>> http://mail.python.org/mailman/listinfo/tutor
>>
>>     

As Sander says, your if/else is backwards.    Presumably the message "Request timed out" is there only
when it's unsuccessful, not when it works.

But you have another, even more subtle problem.  If the log file is more than one line, you're only checking the last one.  Unless you know it's the last one that'll contain the line, you need to move the "in" test inside the for loop.

There are other things to fine-tune, but these are the important ones.

DaveA





More information about the Tutor mailing list