• 用一个 Python 脚本实现依次运行其他多个带 argparse 命令行参数的 .py 文件


    🍉 CSDN 叶庭云https://yetingyun.blog.csdn.net/


    在这里插入图片描述

    问题描述:在 Windows 环境中,您希望通过一个 Python 脚本来实现特定的自动化任务,该任务需要依次运行其他多个带 argparse 命令行参数的 .py 文件。您希望找到一种简洁、高效的方法来解决这个问题。

    问题分析与解决

    • 在 Linux 开发环境中,我们通常可以使用 Bash 脚本来依次运行其他多个带 argparse 命令行参数的 .py 文件。Bash 脚本允许我们编写一系列命令,按顺序执行这些命令,从而实现自动化任务。

    • 在 Windows 环境下,我们可以利用 Python 的 os.system 函数来实现类似的自动化任务。下面将提供一个示例代码,展示如何在 Windows 中依次运行多个带 argparse 参数的 Python 脚本。

    输入描述

    • run_scripts.py:利用 Python 的 os.system 函数来实现依次运行其他多个带 argparse 命令行参数的 .py 文件。

    • script_01.pyscript_02.pyscript_06.py:用于测试的其他多个带 argparse 命令行参数的 .py 文件。如下动图所示意:

    在这里插入图片描述

    python run_scripts.py

    import os
    
    
    os.system("python script_01.py --file_name script_01 --experiment_id 01")
    os.system("python script_02.py --file_name script_02 --experiment_id 02")
    os.system("python script_03.py --file_name script_03 --experiment_id 03")
    os.system("python script_04.py --file_name script_04 --experiment_id 04")
    os.system("python script_05.py --file_name script_05 --experiment_id 05")
    result = os.system("python script_06.py --file_name script_06 --experiment_id 06")
    print(result)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    运行结果如下所示

    运行的 .py 文件的文件名为:script_01
    运行的 .py 文件的编号为:01
    123
    运行的 .py 文件的文件名为:script_02
    运行的 .py 文件的编号为:02
    456
    运行的 .py 文件的文件名为:script_03
    运行的 .py 文件的编号为:03
    789
    运行的 .py 文件的文件名为:script_04
    运行的 .py 文件的编号为:04
    Hello World!
    运行的 .py 文件的文件名为:script_05
    运行的 .py 文件的编号为:05
    I use Python!
    运行的 .py 文件的文件名为:script_06
    运行的 .py 文件的编号为:06
    Machine Learning!
    0
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19

    值得一提的是

    • os.system 函数的设计目标是执行系统命令,而不是获取命令的输出。当你使用 os.system 函数时,它会在系统的 shell 中执行你提供的命令,然后返回一个状态码,表示命令是否成功执行。这个状态码通常是一个整数,0 表示命令成功执行,非零值表示出现了错误。但是,os.system 函数并不会捕获命令的输出。这是因为在许多情况下,用户可能并不关心命令的输出,他们只关心命令是否成功执行。因此,os.system 函数的设计就是这样,它只返回命令的执行状态,而不返回命令的输出。

    • 如果你需要获取命令的输出,Python 提供了其他的函数,比如 os.popen 或者 subprocess 模块中的函数。这些函数可以执行系统命令,并捕获命令的输出,所以如果你需要获取命令的输出,你可以考虑使用这些函数。

    在 Windows 系统中,我们可以使用 dir 命令来列出目录中的文件和文件夹。首先,我们来看一下 os.popen 函数的例子:

    import os
    
    # 使用 os.popen 执行命令,并获取命令的输出
    output = os.popen('dir').read()
    
    # 打印命令的输出
    print(output)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    接下来,我们来看一下 subprocess 模块的例子:

    import subprocess
    
    # 使用 subprocess.run 执行命令,并获取命令的输出
    result = subprocess.run(['dir'], capture_output=True, text=True, shell=True)
    
    # 打印命令的输出
    print(result.stdout)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    在这些例子中,我们使用了 dir 命令,这是 Windows 系统中用来列出目录中的文件和文件夹的命令。我们还在 subprocess.run 函数中添加了 shell=True 参数,这是因为在 Windows 系统中,某些命令(比如 dir)需要在 Shell 中执行。

    希望以上这些例子能帮助你理解 os.popen 函数和 subprocess 模块的用法。😊

    小结

    • 在 Python 中,可以方便地使用 os 模块来运行其他脚本或者程序,这样就可以在脚本中直接使用其他脚本或程序提供的功能,而不必再次编写实现该功能的代码。

    • Python 的 os.system 函数就像是一个小小的指挥家。当你告诉它你想做什么时,它会转身去告诉 Windows 电脑去做这件事。比如,你可以告诉它去打开一个文件,或者去查找一些信息,然后它就会去做。

    • 这个函数的工作原理就像是你在电脑的命令行(就是那个黑色的窗口,你可以在里面输入命令让电脑做事)中输入命令一样。你在 os.system 函数中输入的命令,就会被这个函数送到命令行中去执行。

    • 但是,这个函数只会告诉你命令是否成功执行,而不会告诉你命令执行的结果是什么。如果你想知道命令执行的结果,你可能需要使用其他的函数,比如 os.popen 或者 subprocess 模块中的函数。

    • 还有一点很重要,那就是安全问题。因为 os.system 函数会执行任何你传给它的命令,所以如果你没有对输入进行过滤,那么就可能会出现安全问题。例如,如果你在 Web 服务器上使用 os.system 函数,并且允许用户输入要执行的命令,那么恶意用户就可能通过构造特殊的命令来攻击你的服务器。因此,在使用 os.system 函数时,一定要确保你对输入进行了适当的过滤和检查。


    📚️ 参考链接:

  • 相关阅读:
    Java复习-26-枚举
    【C++学习】继承
    tomcat 端口 8005 被 windows 系统服务占用导致启动闪退的问题
    聚观早报 | 白酒品牌频跨界;微软发布统一版本Copilot
    npm作用域包和版本
    软件测试工程师的职责是什么?
    jQuery_DOM操作标签中的属性值和标签文本内容
    期货价值计算方法(期货的价值怎么计算)
    ARM汇编
    阿里云服务器配置怎么选择?小白攻略
  • 原文地址:https://blog.csdn.net/fyfugoyfa/article/details/136571607