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

运行结果如下所示

运行的 .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 中四种运行其他程序的方式

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【jenkins】简单安装及配置(Windows环境)

前言 jenkins是一款跨平台的持续集成和持续交付、基于Java开发的开源软件,提供任务构建、持续集成监控的功能,可以使开发测试人员更方便的构建软件项目, 提高工作效率。Windows平台下,一般安装方法有2种:安装程序安装…

unicloud where 使用

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

第七十九天 WAF攻防-漏洞发现协议代理池GobyAWVSXray

第79天 WAF攻防-漏洞发现&协议&代理池&Goby&AWVS&Xray 知识点: 1、Http/s&Sock5协议 2、Awvs Xray&Goby代理 3、Pxoxifier进程代理使用 4、Safedog&BT&Aliyun防护 演示案例: Awws漏扫-Sadedog-白名单-内置 Awws漏…

使用Apache Kafka的Golang实践指南

您是否在寻找构建可扩展、高性能应用程序的方法,这些应用程序可以实时处理流数据?如果是的话,结合使用Apache Kafka和Golang是一个很好的选择。Golang的轻量级线程非常适合编写类似Kafka生产者和消费者的并发网络应用程序。它的内置并发原语&…

动态规划DP之背包问题3---多重背包问题

目录 DP分析: 优化: 二进制优化 例题: 01背包是每个物品只有一个,完全背包问题是每个物品有无限个。 那么多重背包问题就是 每个物品有有限个。 有 N 种物品和一个容量是 V 的背包。 第 i 种物品最多有 si 件,每件体…

Mysql学习笔记之事务详解(读未提交、读以提交、可重复读、串行化读)

在这个博主的基础上,增加两种情况的对比:https://blog.csdn.net/llllllkkkkkooooo/article/details/108068919 可重复读中幻读现象(未使用MVCC) 设置可重复读的隔离级别 set global transaction isolation level repeatable read…

代码随想录算法训练营第day40|343. 整数拆分 、 96.不同的二叉搜索树

a.343. 整数拆分 题目链接 给定一个正整数 n ,将其拆分为 k 个 正整数 的和( k > 2 ),并使这些整数的乘积最大化。 返回 你可以获得的最大乘积 。 示例 1: 输入: n 2 输出: 1 解释: 2 1 1, 1 1 1。 示例 2: 输入: …

掼蛋的牌型与规律(上篇)

掼蛋是一项配合类的棋牌竞技游戏,掼蛋的最大魅力以及最集中的特点在于变化,在于组牌的变数。有的掼蛋新手往往先把牌配死,并且直接决定好出牌计划,然后守株待兔。掼蛋的取胜之道在于静态组合加上动态变化。本文主要介绍一下掼蛋的…

python基础篇--学习记录2

1.深浅拷贝 l1 ["张大仙","徐凤年",["李淳刚","邓太阿"]] # 变量名对应的就是内存地址,这里就是将l1的内存地址给了l2 # 现在两个变量指向同一个内存地址,l1变化l2也会变化 l2 l1 现在的需求是l2是l1的拷贝版本,但是两者是完全分割…

七彩虹@电脑cpu频率上不去问题@控制中心性能模式cpu频率上不去@代理服务器超时@账户同步设置失败

文章目录 windows电脑cpu频率上不去新电脑的系统时间问题系统时间不准造成的具体问题举例代理超时vscode同步请求失败自动校准时间 windows电脑cpu频率上不去 问题描述,标压处理器的笔记本,cpu频率上不去 如果cpu没问题的话,就应该是系统限制了功耗导致的有的笔记本有控制中心…

本鲸:打造科技招商新引擎、实现政企资源高效对接

在当今这个快速变化的时代,科技创新已成为推动社会进步和经济发展的核心动力。本鲸,作为科技创新创业服务的平台,正以其独特的视角和专业服务,为政府和企业提供一站式科技招商解决方案,助力构建创新驱动的经济发展新模…

b站小土堆pytorch学习记录—— P27-P29 完整的模型训练套路

文章目录 一、定义模型(放在model.py文件中)二、训练三、测试四、完整的训练和测试代码 一、定义模型(放在model.py文件中) import torch from torch import nnclass Guodong(nn.Module):def __init__(self):super(Guodong,self)…

在vue2中使用tailwindcss(完整教程)

如果你看过好多教程之后,还是报错,无法使用tailwindcss,我希望本教程可以让你成功上岸。 环境要求 node:>v14.17.0 安装tailwindcss 由于最新的tailwind css使用post css 8版本,vue2框架暂时还不支持&#xff0…

Springboot + Vue用户管理系统

Springboot Vue用户管理系统 主要实现了管理员的登录,用户管理,用户的增删改查等操作, 技术实现,前端采用Vue 后端采用Springboot ,前后端分离系统,数据库使用mysql 还用到了redis,mybatis-plus。。。。。。。。。…

10大主流压力/负载/性能测试工具推荐

在移动应用和Web服务正式发布之前,除了进行必要的功能测试和安全测试,为了保证互联网产品的服务交付质量,往往还需要做压力/负载/性能测试。然而很多传统企业在试水互联网的过程中,往往由于资源或产品迭代速度等原因忽视了这一块工…

【Python】科研代码学习:三 PreTrainedModel, PretrainedConfig, PreTrainedTokenizer

【Python】科研代码学习:三 PreTrainedModel, PretrainedConfig, PreTrainedTokenizer 前言Models : PreTrainedModelPreTrainedModel 中重要的方法 tensorflow & pytorch 简单对比Configuration : PretrainedConfigPretrainedConfig 中重要的方法 Tokenizer : …

influxdb2.0插入数据字段类型出现冲突问题解决

一、问题出现 一个学校换热站自控系统,会定时从换热站获取测点数据,并插入到influxdb数据库中。influxdb插入数据时,报错提示: com.influxdb.exceptions.UnprocessableEntityException: failure writing points to database: par…

组合逻辑电路(二)(译码器和编码器)

目录 译码器 简单逻辑门译码器 二进制译码器 2线-4线译码器 3线-8线译码器 二-十进制译码器 4线-10线译码器 七段显示译码器 编码器 二进制普通编码器 二-十进制普通编码器(8421BCD码编码器) 优先编码器(Priority Encoder) 译…

《解密云计算:企业之选》

前言 在当今数字化时代,企业面临着巨大的数据处理压力和信息化需求,传统的IT架构已经无法满足日益增长的业务需求。在这样的背景下,越来越多的企业开始转向云计算,以实现灵活、高效和可扩展的IT资源管理和利用。 云计算 云计算是…

【QT中如何生成导出.exe可执行文件并打包给其他人使用】

1、将QT的部署设置改成Release编译模式。 2、运行项目生成release文件夹,其中包含.exe文件。 3、新建空文件夹,将release文件夹中的.exe文件复制到里面去。(此处新建了hellofile空文件夹来存放hello.exe文件) 4、在QT终端里&#…