用一个 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.mzph.cn/news/731748.shtml

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

相关文章

手写分布式配置中心(六)整合springboot(自动刷新)

对于springboot配置自动刷新,原理也很简单,就是在启动过程中用一个BeanPostProcessor去收集需要自动刷新的字段,然后在springboot启动后开启轮询任务即可。 不过需要对之前的代码再次做修改,因为springboot的配置注入value("…

C++命名空间详解

目录 C的由来: C语言的命名缺陷: 什么是命名空间? 命名空间的访问方式: 1、指定访问 2、展开命名空间(慎用) 相关知识: C的由来: C原来本质上是在C的基础上补充的语法&#x…

ARM单片机中程序在ROM空间和RAM空间的分布(分散加载文件,Scatter-Loading Description File)

对于 K e i l u V i s i o n I D E Keil\quad uVision\quad IDE KeiluVisionIDE,程序编译好之后,代码的下载位置( R O M ROM ROM空间)以及代码运行的时候使用的 R A M RAM RAM空间( R A M RAM RAM空间)默认…

下载一些ROS的包的方式

ROS Index 我们可以去ROS Index网站下载一些我们需要的包。打开浏览器在网址框输入index.ros.org。或者点击此处链接ROS Index 在这个网站中我们可以浏览并找到我们需要的包,也可以下载它的源代码或者仅安装到我们的系统中来使用。(安装过程在终端中进行…

植物病虫害:YOLO水稻虫害识别数据集(6类,五千余张图像,标注完整)

YOLO水稻虫害识别数据集,包含褐飞虱,绿叶蝉,正常叶片,稻虫,二化螟,蝇蛆6个类别,共五千余张图像,yolo标注完整。 适用于CV项目,毕设,科研,实验等 …

零、自然语言处理开篇

目录 0、NLP任务的基础——符号向量化 0.0 词袋模型 0.1 查表/One-hot编码 0.2 词嵌入模型/预训练模型 0.2.0 Word2Vec (0)CBOW (1)Skip-gram 0.2.1 GloVe 0.2.2 WordPiece 0.2.3 BERT 0.2.4 ERNIE NLP自然语言处理&am…

Java 的 System 类常用方法介绍

Java 中的 System 类是一个final类,它提供了与系统相关的属性和方法。它是一个内置的类,可以直接使用,不需要实例化。System 类提供了标准输入、标准输出和错误输出流,以及对外部定义的属性和系统环境的访问。下面是 System 类的一…

LCR 132. 砍竹子 II

解题思路&#xff1a; 由于数量级较大&#xff0c;需要使用long以及快速幂求余 下图便于理解快速幂求余 class Solution {public int cuttingBamboo(int bamboo_len) {if(bamboo_len < 3) return bamboo_len - 1;int b bamboo_len % 3, p 1000000007;long rem 1, x 3;f…

【PHP+代码审计】PHP基础——数据类型

&#x1f36c; 博主介绍&#x1f468;‍&#x1f393; 博主介绍&#xff1a;大家好&#xff0c;我是 hacker-routing &#xff0c;很高兴认识大家~ ✨主攻领域&#xff1a;【渗透领域】【应急响应】 【Java、PHP】 【VulnHub靶场复现】【面试分析】 &#x1f389;点赞➕评论➕收…

012集——显示高考天数倒计时——vba实现

以下代码实现高考倒计时&#xff1a; Sub 高考倒计时() 高考日期 CDate("06,07," & Year(Date)) If Date > 高考日期 Then高考日期 CDate("06-07-" & Year(Date) 1) End If 年月日 Year(Date) & "年" & Month(Date) &am…

Springboot+vue的项目申报管理系统(有报告)。Javaee项目,springboot vue前后端分离项目。

演示视频&#xff1a; Springbootvue的项目申报管理系统&#xff08;有报告&#xff09;。Javaee项目&#xff0c;springboot vue前后端分离项目。 项目介绍&#xff1a; 采用M&#xff08;model&#xff09;V&#xff08;view&#xff09;C&#xff08;controller&#xff09…

低密度奇偶校验码LDPC(九)——QC-LDPC译码器FPGA全并行设计

往期博文 低密度奇偶校验码LDPC&#xff08;一&#xff09;——概述_什么是gallager构造-CSDN博客 低密度奇偶校验码LDPC&#xff08;二&#xff09;——LDPC编码方法-CSDN博客 低密度奇偶校验码LDPC&#xff08;三&#xff09;——QC-LDPC码概述-CSDN博客 低密度奇偶校验码…

蓝牙系列七:开源蓝牙协议栈BTStack数据处理

继续蓝牙系列的研究。 在上篇博客,通过阅读BTStack的源码,大体了解了其框架,对于任何一个BTStack的应用程序都有一个main函数,这个main函数是统一的。这个main函数做了某些初始化之后,最终会调用到应用程序提供的btstack_main,在btstack_main里面首先做一些初始化,然后…

C语言指针——常量字符串和 变量字符串

常量字符串和 变量字符串 常量字符串和变量字符串是在编程中常见的两种字符串类型&#xff0c;它们有以下区别&#xff1a; 值的不可变性&#xff1a;常量字符串的值是不可变的&#xff0c;一旦被定义&#xff0c;就不能修改。而变量字符串的值是可变的&#xff0c;可以随时修…

重建大师6.2版本的建模效果出现下图中模糊的情况,是什么原因?

可能是因为坐标原点设置的不对&#xff0c;图例中的三角网都出现了精度损失的问题。 坐标原点设置的具体操作&#xff1a;提交产品后&#xff0c;在弹出的界面&#xff0c;可以设定坐标原点。 重建大师是一款专为超大规模实景三维数据生产而设计的集群并行处理软件&#xff0…

C语言之练手题

题目1&#xff1a; 思路&#xff1a;我们定义两个变量left和right分别为数组的左端下标和右端下标。 左端下标的元素为奇数时&#xff0c;left继续往前走&#xff0c;为偶数时就停下 右端下标的元素为偶数时&#xff0c;right- -往回走&#xff0c;为奇数时停下 停下后对应的元…

(3)应用与信息

文章目录 前言 3.1 FlightDeck FrSky发射器应用程序 3.2 MAVLink2数据包签名(安全) 3.3 MAVLink高延迟协议 3.4 无线地面站连接中继器 1 概述 2 组件 3 设置 3.5 遥测无线电区域条例 3.6 用于OpenTX的Yaapu遥测脚本 前言 FlightDeck FrSky Transmitter AppMAVLink2 …

Xmind拿来主义快速高效,Xmind思维导图模板合集

一、素材描述 本套Xmind模板&#xff0c;大小153.57M&#xff0c;共有310个文件。 二、素材目录 01-学习模版&#xff08;46套模板&#xff09; 02-知识结构&#xff08;88套模板&#xff09; 03-生活计划&#xff08;26套模板&#xff09; 04-商务模版&#xff08;44套模…

就业班 2401--3.8 Linux Day14--阿帕奇+LNMP(编译安装)

一、WEB服务器 ^世上最重要的事&#xff0c;不在于我们在何处&#xff0c;而在于我们朝着什么方向走。^ 1、WEB服务简介 # 目前最主流的三个Web服务器是Apache、Nginx、 IIS。 - WEB服务器一般指网站服务器&#xff0c;可以向浏览器等Web客户端提供网站的访问&#xff0c;让全…

20-Java备忘录模式 ( Memento Pattern )

Java备忘录模式 摘要实现范例 备忘录模式&#xff08;Memento Pattern&#xff09;保存一个对象的某个状态&#xff0c;以便在适当的时候恢复对象 备忘录模式属于行为型模式 摘要 1. 意图 在不破坏封装性的前提下&#xff0c;捕获一个对象的内部状态&#xff0c;并在该对…