user3010197
user3010197

Reputation: 47

Python read windows Command Line output

I am trying to execute a command in python and read its output on command line in windows.

I have written the following code so far:

def build():
    command = "cobuild archive"
    print "Executing build"
    pipe = Popen(command,stdout=PIPE,stderr=PIPE)
    while True:     
        line = pipe.stdout.readline()
        if line:
            print line

I want to execute the command cobuild archive in command line and read it's output. However, the above code is giving me this error.

 File "E:\scripts\utils\build.py", line 33, in build
   pipe = Popen(command,stdout=PIPE,stderr=PIPE)
 File "C:\Python27\lib\subprocess.py", line 679, in __init__
   errread, errwrite)
 File "C:\Python27\lib\subprocess.py", line 893, in _execute_child
   startupinfo)
WindowsError: [Error 2] The system cannot find the file specified

Upvotes: 2

Views: 12242

Answers (3)

quant
quant

Reputation: 2224

Do you mind to post your code with the correct indentations please? They have a large effect in python - another way of doing this is:

import commands
# the command to execute
cmd = "cobuild archive"
# execute and get stdout
output = commands.getstatusoutput( cmd )
# do something with output
# ...

Update:

The commands module has been removed in Python 3, so this is a solution for python 2 only.

https://docs.python.org/2/library/commands.html

Upvotes: 1

user3010197
user3010197

Reputation: 47

The following code worked. I needed to pass shell=True for the arguments

def build():    
command = "cobuild archive" 
pipe = Popen(command,shell=True,stdout=PIPE,stderr=PIPE)    

while True:         
    line = pipe.stdout.readline()
    if line:            
        print line
    if not line:
        break

Upvotes: 2

Siva Cn
Siva Cn

Reputation: 947

WindowsError: [Error 2] The system cannot find the file specified

This error says that the subprocess module is unable to locate your executable(.exe)

here "cobuild archive"

Suppose, if your executable in this path: "C:\Users\..\Desktop", then, do,

import os

os.chdir(r"C:\Users\..\Desktop")

and then use your subprocess

Upvotes: 1

Related Questions