So I've been using this Pythonista Project Template to be able to use some SymPy in my iOS App. This is working fine with following code :
//Run the main script:
if (scriptPath) {
NSString *script = @"from sympy import *\ninit_printing(use_unicode=True)\nx = Symbol('x')\nprint(solve(x**2 - 1, x))";
if (script) {
[[PythonInterpreter sharedInterpreter] run:script asFile:scriptPath];
} else {
NSLog(@"Could not load main.py (make sure its encoding is UTF-8)");
}
} else {
NSLog(@"Could not find main.py");
}
So in this template there is a script called "captureoutput.py" wich looks like the following :
def _capture_output_main():
import _outputcapture
import sys
class StdoutCatcher (object):
def __init__(self):
self.encoding = 'utf8'
def write(self, s):
if isinstance(s, str):
_outputcapture.CaptureStdout(s)
elif isinstance(s, unicode):
_outputcapture.CaptureStdout(s.encode('utf8'))
def writelines(self, lines):
for line in lines:
self.write(line + '\n')
def flush(self):
pass
class StderrCatcher (object):
def __init__(self):
self.encoding = 'utf8'
def write(self, s):
if isinstance(s, str):
_outputcapture.CaptureStderr(s)
elif isinstance(s, unicode):
_outputcapture.CaptureStderr(s.encode('utf8'))
def flush(self):
pass
class StdinCatcher (object):
def __init__(self):
self.encoding = 'utf8'
def read(self, len=-1):
return _outputcapture.ReadStdin(len)
def readline(self):
return _outputcapture.ReadStdin()
sys.stdout = StdoutCatcher()
sys.stderr = StderrCatcher()
sys.stdin = StdinCatcher()
_capture_output_main()
del _capture_output_main
This outputs into a OMTextView in the App but I want to have the output accessible without UI use. Like in an NSString or somethingIi can work with without using UI.
I hope I was able to clarify my problem ! Thanks for your help in advance !
All my best,
Robert