如何从另一个python代码运行python代码

时间:2018-01-23 09:52:23

标签: python subprocess

我在不同文件夹中有多个python代码,必须按顺序运行。之前有过类似的问题,但答案似乎没有成功。我尝试了以下命令:

subprocess.check_call(["Python", "D:/demo/full_alg.py"])
subprocess.check_output(["Python", "D:/demo/full_alg.py"])
os.system("D:/demo/full_alg.py")

执行full_alg.py文件时,必须打印出执行代码的文件列表,并创建相应的tiff文件

2 个答案:

答案 0 :(得分:0)

我想知道你为什么不试图导入full_alg.py包并且基于main中的函数调用消耗调用的结果。如何准确地做到这很大程度上取决于full_alg.py的内容。

如果您坚持运行运行另一个python脚本的子进程,我建议您查看multiprocessing模块和示例here

您的代码无效的原因可能是PythonPATH解释程序丢失。我建议将完整路径传递给您正在使用的解释器和脚本。如果运行subprocess.check_callsubprocess.check_output,则应执行此操作。对于最后一个(os.system)我不认为它可以运行,除非你设置python解释器作为打开*.py文件的默认应用程序,即使这样,它依赖于非显而易见的配置要运行的操作系统。

答案 1 :(得分:0)

您可以使用subprocess库,如下所示:

import subprocess

args = ['{}/manage.py'.format('/home/<you>/<path>'), 'runserver']
subprocess.Popen(args, stdout=subprocess.PIPE)

请遵循以下方法:My answer in another post

[UPDATE]:

这是python3的一个例子:

import subprocess

python_version = '3'
path_to_run = './'
py_name = '__main__.py'

# args = [f"python{python_version}", f"{path_to_run}{py_name}"]  # Available in python3
args = ["python{}".format(python_version), "{}{}".format(path_to_run, py_name)]

res = subprocess.Popen(args, stdout=subprocess.PIPE)
output, error_ = res.communicate()

if not error_:
    print(output)
else:
    print(error_)