Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Python3 命令行参数解析

Python3 命令行参数解析

作者头像
嵌入式视觉
发布于 2022-09-05 06:18:41
发布于 2022-09-05 06:18:41
1.4K00
代码可运行
举报
文章被收录于专栏:嵌入式视觉嵌入式视觉
运行总次数:0
代码可运行

Contents

sys.argv,这种方法比较古老,灵活性很差,同时解析出来的参数都是 str 类型。但在编写简单脚本,参数较少且固定时比较方便。argparse 模块是 Python 标准库中推荐的命令行解析模块,命令行参数解析在 windows 系统下不适用,但在 linux 系统下几乎要总是考虑命令行参数解析。

sys.argv用法

  • sys.argv[] 获取的是命令行参数列表,sys.argv[0] 表示代码本身文件路径,所以命令行参数从sys.argv[1] 开始。
  • len(sys.argv) 获取的 是命令行参数个数。

新建 demo.py,并输入以下 代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# -*-coding-*-: utf-8
import sys
a=sys.argv[0]  # sys.argv[0]永远表示的是你运行的程序文件名
b=sys.argv[1]
c=sys.argv[2]
print("filename:",a)
print("param1:",b)
print("param2:",c)

终端中运行:python demo.py honggao zhang。输出如下:

(‘filename:’, ‘demo.py’)  (‘param1:’, ‘honggao’)  (‘param2:’, ‘zhang’)

argparse 模块用法

在模型训练程序中,我们经常要配置命令参数,这里可用到 argparse 模块,它是 Python 内置的一个用于命令选项与参数解析的模块,通过在程序中定义好我们需要的参数,argparse 将会从 sys.argv 中解析出这些参数,并自动生成帮助和使用信息。 使用 argparse 模块解析命令行参数,主要分三个步骤:创建解析器、添加参数、解析参数,步骤如下:

  • 创建 ArgumentParser() 对象
  • 调用 add_argument() 方法添加参数:定位参数、可选参数和混合使用参数
  • 使用 parse_args() 解析添加参数

理解 add_argument() 方法

add_argument() 方法定义了如何解析命令行参数: 

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
ArgumentParser.add_argument(name or flags...[, action][, nargs][, const][, default][, type][, choices][, required][, help][, metavar][, dest])
  • name or flags – 选项字符串的名字或者列表,例如 foo 或者 -f, –foo。
  • action – 命令行遇到参数时的动作,默认值是 store。
    • store_const,表示赋值为 const 的相反值,比如 store_true,代表参数赋值为 false
    • append,将遇到的值存储成列表,也就是如果参数重复则会保存多个值;
    • append_const,将参数规范中定义的一个值保存到一个列表;
    • count,存储遇到的次数;此外,也可以继承 argparse.Action 自定义参数解析;
  • nargs – 应该读取的命令行参数个数,可以是具体的数字,或者是 ? 号,当不指定值时对于 Positional argument 使用 default,对于 Optional argument 使用 const;或者是 * 号,表示 0 或多个参数;或者是 + 号表示 1 或多个参数。
  • const – action 和 nargs 所需要的常量值。
  • default – 不指定参数时的默认值。
  • type – 命令行参数应该被转换成的类型。
  • choices – 参数可允许的值的一个容器
  • required – 可选参数是否可以省略 (仅针对可选参数)。
  • help – 参数的帮助信息,当指定为 argparse.SUPPRESS 时表示不显示该参数的帮助信息.
  • metavar – 在 usage 说明中的参数名称,对于必选参数默认就是参数名称,对于可选参数默认是全大写的参数名称.
  • dest – 解析后的参数名称,默认情况下,对于可选参数选取最长的名称,中划线转换为下划线.

argparse示例

示例 1 代码如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import argparse
if __name__ == "__main__":
    parser = argparse.ArgumentParser(description="annotated data set for aligned")
    parser.add_argument('-r1', '--src-data-root', dest='data_root1', default='/mnt/dms_data/Data_All/custom_alarm_smokeall_20190505/json/v20190610', type=str, metavar='STRING', help='src data path')
    parser.add_argument('-r2', '--dst-data-root', dest='data_root2', default='/mnt/dms_data/Data_All/custom_alarm_smokeall_20190505/json/v20190505', type=str, metavar='STRING', help='tag data path')
    args = parser.parse_args()
    data_root1 = args.data_root1
    data_root2 = args.data_root2
    print('data_root1 path is %s' % data_root1)  # data_root1 path is /mnt/dms_data/Data_All/custom_alarm_smokeall_20190505/json/v20190610

输出如下:

data_root1 path is /mnt/dms_data/Data_All/custom_alarm_smokeall_20190505/json/v20190610

新建 foler_size.py,实现计算指定目录的大小,并输入以下代码。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# Description   : This will scan the current directory and all subdirectories and display the size.

import os
import sys  # Load the library module and the sys module for the argument vector'''
import argparse

# try:
#     directory = sys.argv[1]  # Set the variable directory to be the argument supplied by user.
# except IndexError:
#     sys.exit("Must provide an argument.")

class directory
def get_folder_size(folder_path):
    dir_size = 0  # Set the size to 0
    fsizedicr = {'Bytes': 1,
                'Kilobytes': float(1) / 1024,
                'Megabytes': float(1) / (1024 * 1024),
                'Gigabytes': float(1) / (1024 * 1024 * 1024)}
    # Walk through all the directories. For each iteration, os.walk returns the folders, subfolders and files in the dir.
    for (path, dirs, files) in os.walk(folder_path):  
        for file in files:  # Get all the files
            filename = os.path.join(path, file)
            dir_size += os.path.getsize(filename)  # Add the size of each file in the root dir to get the total size.

    fsizeList = [str(round(fsizedicr[key] * dir_size, 2)) + " " + key for key in fsizedicr]  # List of units

    if dir_size == 0:
        print("File Empty")  # Sanity check to eliminate corner-case of empty file.
    else:
        for units in sorted(fsizeList)[::-1]:  # Reverse sort list of units so smallest magnitude units print first.
            print("Folder Size: " + units)

if __name__ == "__main__":
    parser = argparse.ArgumentParser(description='This will scan the current directory and all subdirectories and display the size.')
    parser.add_argument('--folder_path', type=str, default="C:\\Users\\zhanghonggao\\Documents\\image_utils",
                        help='the path of folder,')
    args = parser.parse_args()
    get_folder_size(args.folder_path)

终端中运行:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
python folder_size.py --folder_path "C:\Users\zhanghonggao\Documents\image_utils"

输出如下:

Folder Size: 43652259 Bytes Folder Size: 42629.16 Kilobytes Folder Size: 41.63 Megabytes Folder Size: 0.04 Gigabytes

参考资料

My Python Examples

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020-12-16,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Python的命令行参数解析
命令行参数解析在编程语言中基本都会碰到,Python中内置了一个用于命令项选项与参数解析的模块argparse。下面主要介绍两种解析Python命令行参数的方式。 1. sys.argv 解析Pyth
Tyan
2017/12/28
1.8K0
parser.add_argument()用法——命令行选项、参数和子命令解析器
argparse是一个Python模块:命令行选项、参数和子命令解析器。通过使用这种方法,可以在使用
汀丶人工智能
2022/12/21
3.3K0
【测试开发】python系列教程:argparse 模块
在命令行程序中,经常需要获取命令行参数。Python内置的sys.argv保存了完整的参数列表,我们可以从中解析出需要的参数:
雷子
2023/08/25
2600
【测试开发】python系列教程:argparse 模块
Python | 使用argparse解析命令行参数
今天是Python专题第27篇文章,我们来聊聊Python当中的命令行参数工具argparse。
TechFlow-承志
2020/08/17
2.1K0
Python 命令行参数解析库argparse
在工作业务中,有些函数的调用要尽量傻瓜,能够让其他人能够方便地调用,毕竟甲方是爸爸。
MeteoAI
2019/07/24
1.9K0
python-argparse
在python程序中,第一步就是获取参数,然后程序才能执行。对于简单的程序脚本,可以直接使用sys.argv[] 来获取命令行参数,但是应用到大的软件项目中,我们需要更加规范,更加方便而功能强大工具来处理命令行参数,本文主要介绍python标准库argparse的简单使用,详细方法及示例请参考python标准库
零式的天空
2022/03/02
8480
python中argparse 命令行参数解析包
argparse 是python自带的命令行参数解析包,可以用来方便地读取命令行参数,当你的代码需要频繁地修改参数的时候,使用这个工具可以将参数和代码分离开来,让你的代码更简洁,适用范围更广
Python学习者
2023/03/30
8770
Python3脚本编程常用.md
Python 提供了 getopt 模块来获取命令行参数(指定参数名称) getopt 模块是专门处理命令行参数的模块,用于获取命令行选项和参数,也就是sys.argv,命令行选项使得程序的参数更加灵活,支持短选项模式(-)和长选项模式(–)。
全栈工程师修炼指南
2020/10/23
1.1K0
Python3脚本编程常用.md
python与R中的命令行参数解析方法
在写pipeline的时候,经常把python和R程序都整合进bash脚本里,这样比较方便,python和R怎么解析命令行参数的呢?
生信编程日常
2020/04/01
1.5K0
python与R中的命令行参数解析方法
python学习之argparse模块
argparse是python用于解析命令行参数和选项的标准模块,用于代替已经过时的optparse模块。
py3study
2020/01/09
2K0
python argparse处理命令行参数
对于脚本编程而言,经常需要从命令行传递参数到脚本中。对于命令行参数的定义和使用,有一套完整的规则,以linux上的ls命令为例
生信修炼手册
2020/05/25
1.7K0
Python 利用argparse模块实现脚本命令行参数解析
如上,以上代码实现是针对单个模块脚本,如果要在多个模块中使用咋办?解决方法为封装为类,具体参见“代码实践2”
授客
2020/12/29
1.1K0
Python 模块:argparse
argparse 模块可以让人轻松编写用户友好的命令行接口。程序定义它需要的参数,然后 argparse 将弄清如何从 sys.argv 解析出那些参数。argparse 模块还会自动生成帮助和使用手册,并在用户给程序传入无效参数时报出错误信息。
不可言诉的深渊
2019/07/26
2.6K0
【python】python指南(二):命令行参数解析器ArgumentParser
在Python中,ArgumentParser用于定义和读取命令行输入的参数,在运行python文件时对命令行参数进行解析处理。
LDG_AGI
2024/08/13
4840
【python】python指南(二):命令行参数解析器ArgumentParser
Pytorch学习-如何接受命令行参数argparse模块
使用argparse 模块定义解析命令行参数,命令 行参数其实也是应用在程序中的参数,只是为了更方便他人使用程序而设置。
AI深度学习求索
2018/12/11
5.1K0
Python中的参数传递与解析
Python传递命令行参数 Python的命令行参数传递和C语言类似,都会把命令行参数保存到argv的变量中。对于python而言,argv是sys模块中定义的一个list。与C语言不同的是,python中并没有定义argc,要获得参数的个数,需要使用len(sys.argv) 当用户使用'python -c "command" '来运行一条python语句时,argv中保存的是['-c']及"command"后面的参数,例如: $ python -c 'import sys print sys.argv'
宅蓝三木
2018/02/07
2.4K0
Python 基础(二十一):argparse 模块
argparse 模块主要用于处理 Python 命令行参数和选项,程序定义好所需参数后,该模块会通过 sys.argv 解析出那些参数;除此之外,argparse 模块还会自动生成帮助和使用手册,并在用户给程序传入无效参数时报出错误信息。使用 argparse 模块,我们可以轻松的编写出用户友好的命令行接口。
Python小二
2020/08/18
6640
python: argparse库 & 命令行解析工具
API ArgumentParser.add_argument(name or flags…[, action][, nargs][, const][, default][, type][, choices][, required][, help][, metavar][, dest]) name or flags - 选项字符串的名字或者列表,例如 foo 或者 -f, –foo。 action - 命令行遇到参数时的动作,默认值是 store。 store_const,表示赋值为con
JNingWei
2018/09/27
7460
使用命令行界面运行Python脚本
本文将讲解如何使用带有argparse库的命令行界面运行Python脚本。命令行界面(CLI)允许我们通过在Shell(如果使用的是Windows,则为命令提示符)中键入命令来执行程序。我们可以在命令行上键入不同的参数并将这些参数传递到脚本中,而不是每次运行脚本时都更改.py文件中的代码。因此,使用CLI是非常灵活和方便的,而且,从黑屏启动程序会让你更酷,更像一个真正的程序员。
fanjy
2022/04/13
3.2K0
使用命令行界面运行Python脚本
python-argparse模块
我们通过控制台 输入 python3 argsparser_demo.py --help,我们可以看到相关说明
搁浅同学
2022/07/21
3430
python-argparse模块
相关推荐
Python的命令行参数解析
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验