Redirect stdout to StringIO()
The following python code will use the capturePrint function to redirect stdio to StringIO() so you can capture info that would normally just be printed. I tested this using the Music21 .show(‘text’) method.
# capturePrint.py def capturePrint(executableStrThatPrints): import sys, StringIO # redir sys.stdout stdout = sys.stdout sys.stdout = reportSIO = StringIO.StringIO() eval(executableStrThatPrints) reportStr = reportSIO.getvalue() # restore sys.stdout so we can print sys.stdout = stdout return reportStr def testCapturePrint(): from music21 import * global sBach sBach = corpus.parse('bach/bwv7.7') x = capturePrint("""sBach.show('text')""") print x if __name__ == '__main__': testCapturePrint()