The cat trick didn't work. Changed subprocess.call() with subprocess.Popen(), reading from the makeCourseCSV.sh via pipe.communicate(), and sending each line straight to the browser.