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

问题描述 投票:2回答:2

我在不同的文件夹中有多个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文件

python subprocess
2个回答
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_)

0
投票

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

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

您的代码不起作用的原因可能是Python缺少PATH解释器。我建议将完整路径传递给您正在使用的解释器和脚本。这应该在运行subprocess.check_callsubprocess.check_output的情况下。对于最后一个(os.system)我不认为它可以运行,除非你设置python解释器作为打开*.py文件的默认应用程序,甚至那取决于要运行的操作系统的非显而易见的配置。

© www.soinside.com 2019 - 2024. All rights reserved.