用一个 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 osos.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)

运行结果如下所示

运行的 .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

值得一提的是

  • 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)

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

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

在这些例子中,我们使用了 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 函数时,一定要确保你对输入进行了适当的过滤和检查。


📚️ 参考链接:

  • 在 Python 中处理命令行参数详解(sys.argv 与 argparse 详解)

  • Python 如何运行多个 py 文件 带参数

  • Python 中四种运行其他程序的方式

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/522694.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

华为设备小型园区网方案(有线+无线+防火墙)

(一)配置有线部分 1.配置LSW2 (1)创建相关vlan [LSW2]vlan batch 10 3000 (2)配置连接LSW1的Eth-Trunk1,透传VLAN 10 3000 [LSW2]int Eth-Trunk 1 [LSW2-Eth-Trunk1]port link-type trunk [LSW2…

安装nexus + 部署私有maven仓库

安装nexus 部署私有maven仓库 文章目录 安装nexus 部署私有maven仓库1.下载2.解压3.修改配置文件4.启动5.访问6.查看默认密码7.创建私库8.修改代码配置文件9.在maven 的setting.xml中配置私库的账号密码10.运行manve 【deploy】命令测试11.maven项目引用私库12. 重新加载mave…

指针进阶(4)看一下这些与指针有关的题你都会做吗?

c语言中的小小白-CSDN博客c语言中的小小白关注算法,c,c语言,贪心算法,链表,mysql,动态规划,后端,线性回归,数据结构,排序算法领域.https://blog.csdn.net/bhbcdxb123?spm1001.2014.3001.5343 给大家分享一句我很喜欢我话: 知不足而奋进,望远山而前行&am…

智慧公厕的三大特点:信息化、数字化、智慧化

智慧公厕是以物联网、互联网、大数据、云计算等先进技术为支撑,对公共厕所的使用、运营、管理、养护进行全方位高效应用的创新型公厕。它具有三大显著特点:(ZonTree中期)信息化、数字化和智慧化。本文以智慧公厕源头实力厂家广州中…

Vision Transformer结构解析

Vision Transformer结构解析 ViT简介ViT参数量ViT三大模块ViT图像预处理模块——PatchEmbed多层Transformer Encoder模块MLP(FFN)模块 基本的Transformer模块Vision Transformer类的实现Transformer知识点网络结构计算复杂度对比Transformer的参数量和计…

几种电脑提示mfc140.dll丢失的解决方法,以及如何预防mfc140.dll丢失

mfc140.dll真是一个超级关键的动态链接库文件!一旦这个文件不翼而飞,可能会导致一些程序无法顺利运行,甚至给系统带来麻烦。但别担心!遇到mfc140.dll文件丢失的情况,我们有一堆应对措施可以立马施行,确保问…

类和对象-C++运算符重载

#include <iostream> #include <string> using namespace std;class Person { public:Person(int age){m_Agenew int (age);}~Person(){if(m_Age!NULL){delete m_Age;m_AgeNULL;}}//重载 赋值运算符Person& operator (Person &p){//编译器提供深拷贝//m_Ag…

143.和弦是什么?和声是什么?三和弦

内容参考于&#xff1a; 三分钟音乐社 上一个内容&#xff1a;142.音程的构唱练习 和弦的定义&#xff1a; 一个音可以把它称为单音 两个音可以把它称为音程 更多的音&#xff0c;通俗的定义上&#xff0c;三个音或者三个以上的音构成的集体就可以叫做和弦&#xff0c;这些音…

FPGA IBUFG

IBUFG和IBUFGDS的输入端仅仅与芯片的专用全局时钟输入管脚有物理连接&#xff0c;与普通IO和其它内部CLB等没有物理连接。 所以&#xff0c;IBUFG输入的不能直接接另外信号。 GTH transceiver primitives are called GTHE3_COMMON and GTHE3_CHANNEL in UltraScale FPGAs, an…

设计模式——2_4 中介者(Mediator)

我寄愁心与明月&#xff0c;随风直到夜郎西 ——李白《闻王昌龄左迁龙标遥有此寄》 文章目录 定义图纸一个例子&#xff1a;怎么调度一组地铁站台和地铁开车指挥中心 碎碎念中介者和表单平台思想但是这种平台便利性是要付出代价的变化隔离原则 姑妄言之 定义 用一个中介者对象…

java及特性的简单介绍

简介&#xff1a; 印度尼西亚有一个盛产咖啡的岛屿java&#xff0c;中文名翻译为爪哇&#xff0c;给这种新语言起码java 寓意端上一杯热咖啡。 特性&#xff1a; 1.面向对象 2.与平台无关 3.稳定安全 4.多线程 面向对象 1.面向对象语言关注的是对象&#xff0c;而不关注过程 2…

unicloud where 使用

where介绍 在uniCloud中&#xff0c;WHERE是一个用于指定查询条件的关键字。它允许用户根据特定的条件来筛选和查询云数据库中的数据。WHERE语句的基本语法格式是WHERE condition&#xff0c;其中condition表示查询条件&#xff0c;可以是一个或多个逻辑表达式组成的条件。 在…