is there a limit to command.getstatusoutput() buffer in python
linux, python
Solution
The method `getstatusoutput()` returns a string, which can be very long and therefore take up a lot of space and cause paging to disk and other nasty things.
Since the `commands` module is deprecated anyway, better use the `subprocess` module which provides a file-like access to the process output. If you need the output for later, just write it into a file on the hard disk
cmd = subprocess.Popen(['ls'], stdout=file('output', 'w'))
If you want process to process the output, read stdout like this
cmd = subprocess.Popen(['ls'], stdout=subprocess.PIPE)
for line in cmd.stdout:
do_stuff(line)
Which will be easier on your memory.
Problem
I have created a script to run a test script on a batch of files,have been testing it overnight for two nights, however it just hangs at a certain point. I was wondering if the the commands.getstatusoutput() is the issue here since the test script is has a heavy logging mechanism. Update: How is using subprocess module functions different from using os.system() which way of doing things is better?