如何使用单个Python(.py)脚本运行多个Python脚本

4
我已经编写了多个Python脚本,按顺序运行以实现一个目标,即:
my-directory/ a1.py, xyz.py, abc.py, ...., an.py
所有这些脚本都在同一个目录中,现在我想编写一个单一的脚本来依次运行所有这些.py脚本。为此,我想编写一个单一的Python(.py)脚本,但不知道如何编写。由于我使用的是Windows10,因此Bash脚本方法不适用。
在Windows上编写一个高效的迁移脚本的最佳方式是什么?

1
为什么不将其他脚本导入到此脚本中,然后只需使用它们的方法呢? - Brenden Price
1
看一下这个同时运行多个Python脚本的链接。 - Ajay Verma
1
多个Python脚本需要按顺序运行,使用批处理文件似乎是一个不错的选择。 - John Gordon
2
你可以使用标准库中的subprocess模块。 - darcamo
2个回答

6

使用一个主 Python 脚本是一种可能性(与批处理或 shell 相比,它是跨平台的)。扫描目录并打开每个文件,执行它。

import glob,os
os.chdir(directory)  # locate ourselves in the directory
for script in sorted(glob.glob("*.py")):
    with open(script) as f:
       contents = f.read()
    exec(contents)

Python 2 中有一个 execfile 方法,但在 Python 3 中已经删除。现在我们需要读取文件内容并将其传递给 exec 方法,在 Python 2 中同样适用。

在该示例中,顺序由脚本名称决定。要更改不同的顺序,请使用显式的 Python 脚本列表:

for script in ["a.py","z.py"]:

该方法不会创建子进程,它只是像把脚本拼接在一起一样运行它们(如果某些文件没有关闭并被后续脚本使用,这可能会成为问题)。此外,如果出现异常,它会停止整个脚本列表的运行。这也许并不是什么坏事,因为它可以避免后续脚本在错误数据上运行。


0

你可以为整个脚本2命名一个函数,像这样:

script2.py
def main():
    print('Hello World!')

使用以下代码导入script2函数:

script1.py
from script2.py import *
main()

希望这对你有所帮助(如果我没有回答你的问题,请告诉我,我是意大利人..)


您提出的方法是将一个文件导入另一个文件的简单方法,但我想通过一个脚本逐个运行多个不同编写的脚本。 - Eisha Tir Raazia
1
为什么你不能使用这种方法?你能更好地解释一下吗? - Matteo Bianchi
因为我想保持脚本的独立性,但又想通过一个单一的脚本依次运行它们。 - Eisha Tir Raazia

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接