Use bat file in CGI Python on localhost
Question: I'm quite stuck with with a complex mix of files and languages! The problem:
My webform starts a python script, as a cgi script, on localhost(apache). In
this python script I want to execute a batchfile. This batchfile executes
several commands, which i tested thoroughly.

If i execute the following python file in the python interpreter or in CMD it
does execute the bat file. But when I 'start' the python script from the
webform it says it did it, but there are no results, so i guess something is
wrong with the cgi part of the problem?!

The process is complicated, so if someone has a better way of doing this...pls
reply;). I'm using windows so that makes things even more annoying sometimes.

I think it's not the script, because I try `subprocess.call`, `os.startfile`
and `os.system` already! It either does nothing or the webpage keeps
loading(endless loop)

Python script:

    
    
    import os
    from subprocess import Popen, PIPE
    import subprocess
    
    print "Content-type:text/html\r\n\r\n"
    p = subprocess.Popen(["test.bat"], stdout = subprocess.PIPE, stderr = subprocess.PIPE)
    out, error = p.communicate()
    print out
    print "DONE!"
    

The bat file:

    
    
    @echo off
    ::Preprocess the datasets
    CMD /C java weka.filters.unsupervised.attribute.StringToWordVector -b -i data_new.arff -o data_new_std.arff -r tweetin.arff -s tweetin_std.arff
    :: Make predictions with incoming tweets
    CMD /C java weka.classifiers.functions.SMO -T tweetin_std.arff -t data_new_std.arff -p 2 -c first > result.txt
    

Thanks for your reply!!


Answer: A couple of things come to mind. You might want to try setting your Popen's
shell=True. Sometimes I have noticed that's solved my problem.

    
    
    p = subprocess.Popen(["test.bat"], stdout = subprocess.PIPE, stderr = subprocess.PIPE, shell=True)
    

You may also want to take a look at [Fabric](http://docs.fabfile.org/en/1.6/),
which is perfect for this kind of automation.

