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

Popular posts from this blog

amazon web services - S3 Pre-signed POST validate file type? -

c# - Check Keyboard Input Winforms -