Executing a Python file from within Python, feeding it input and retrieving output -
i'm writing web application users may attempt solve various programming problems. user uploads executable .py file , application feeds pre-determined input , checks whether output correct. (similar how codeforce works)
assuming have uploaded user's script, how execute user's script within own python script, feeding user's script input captured normal input()
function, , retrieving output print()
functions can verify correctness?
figured out.
note: if going use in production environment, make sure place restrictions on user can execute.
executor.py
import subprocess # create process process = subprocess.popen( ['python3.4','script_to_execute.py'], # shell command stdin=subprocess.pipe, stdout=subprocess.pipe, stderr=subprocess.pipe ) # encode string bytes, since communicate function accepts bytes input_data = "captured string".encode(encoding='utf-8') # send input process, retrieve output of print() function stdoutdata, stderrdata = process.communicate(input=input_data) # decode output string output_data = stdoutdata.decode(encoding='utf-8') print(output_data)
script_to_execute.py
input_data = input() print("input recieved!\ndata: " + input_data)
output of executor.py
input recieved! data: captured string
Comments
Post a Comment