在一个Python程序中执行另一个Python程序

分类:Python
2021-03-13 13:16 阅读(?)评论(0)
在一个Python程序中执行另一个Python程序
    今年在上python的课,大家都知道有上课,则必有考试,新年以来都在做一个Python的考试系统,在程序的编码过程中就需要用使用到在python代码中执行学生上传的Python文件代码的功能。在网上搜索了一下,结合自己的应用,总结如下:
    1、os.system
import os res = os.system('python d:/python/filename.py')
上述代码使用了os模块,通过os的system方法,在当前进程中打开一个子shell(子进程)来执行系统命令。在该命令中就是在python中直接 执行d:/python/filename.py文件的程序代码。 这个方法只返回状态码(res),执行结果会输出到stdout,也就是输出到终端。
虽然使用这种方法可以正常的执行任何程序,但缺点是每次运行都会进入python交互式环境(出现黑色窗口),在程序执行完成后正常退出,
这影响了效果。
2、os.popen
import os
f = os.popen('python F:/上课内容/2020-2021-2/课件/1.py < F:/上课内容/2020-2021-2/课件/1.txt', 'r')
res = f.readlines()
res
在上述命令中,python后的第一个参数1.py文件是需要运行的Python文件,第二个参数1.txt文件是1.txt运行时的输入,注意在1.py文件运行时需要用户输入时才需要这个参数。
这个方法文件描述符,可以从这个文件描述符中读取该程序的执行结果。这时使用readlines()方法将输出结果读取到res中。只要分析res中的值就可以知道程序的执行结果结果是否正确。
os.popen() 功能强于os.system() ,是使用进程方法运行的,运行时不会出现黑色窗口,适合在考试系统中使用。
  最后修改于 2021-03-13 13:28    阅读(?)评论(0)
 
表  情:
加载中...
 

请各位遵纪守法并注意语言文明