1、什么叫解析器?
解析器(parser)是一种程序或组件,用于分析输入的数据,并将其转换为更易于处理的格式。解析器在计算机科学中有广泛的应用,特别是在编译器、解释器、自然语言处理和数据格式转换等领域。
1.1解析器的主要功能:
1. 语法分析: 检查输入数据是否符合特定的语法规则。
2. 语义分析: 在语法正确的基础上,进一步检查数据的逻辑或语义正确性。
3. 数据转换: 将输入数据转换为另一种表示形式,以便后续处理。
2、什么叫命令行解析器?
命令行解析器(command-line parser)是一种专门用于处理命令行输入的解析器。它的主要功能是解析用户在命令行界面(CLI)中输入的命令、选项和参数,并将其转换为程序可以处理的格式。(也就是说,在终端内使用python example.py运行的时候,会有很多其他的参数,命令行解析器就是用来解析这些参数,以便完成相应的功能)。
2.1 命令行解析器的主要功能:
1. 解析命令和参数: 将命令行输入解析成命令、选项(flags)和参数。
2. 验证输入: 检查命令和参数是否符合预定义的规则和格式。
3. 生成帮助信息: 当用户请求帮助或输入无效时,生成和显示帮助信息。
4. 错误处理: 处理输入错误,并给出有意义的错误消息。2.2 命令行解析器的典型用法:
2.3 示例:使用 Python 的 argparse 模块
# 添加参数add_argument,add_argument("--变量",type = ?(这里是变量的类型),default= 这是默认取值,这个可以有也可以没有,但没有的时候,命令行里就必须有,否则报错。
required
:指定该参数是否是必需的。默认为False
,即可选参数。如果将其设置为True
,则在命令行中必须提供该参数,否则将引发错误。help="……",help的作用是当你在命令行中输入-h时会提醒你)import argparse # 创建argparse.ArgumentParser解析器 parse = argparse.ArgumentParser(description="This is a description.") # parse = argparse.ArgumentParser()括号里可以什么也不写 # 这里写了description是提示 # 添加参数add_argument parse.add_argument("--length",type=int,default=10,required=True,help="请输入length的值") # 有默认值 parse.add_argument("--wigth",type=int,required=True,help="请输入width的值") # 没有默认值 # 解析参数parse_args args = parse.parse_args() if __name__ == '__main__': result = args.length * args.wigth print(f"result = {result}",f"result = {str(result)}") ''' 运行结果(无任何参数): python test1.py usage: test1.py [-h] --length LENGTH --width WIDTH test1.py: error: the following arguments are required: --length, --width ''' ''' 运行结果(带-h): python test1.py -h usage: test1.py [-h] --length LENGTH --width WIDTH This is a description. options: -h, --help show this help message and exit --length LENGTH 请输入length的值 --width WIDTH 请输入width的值 ''' ''' 运行结果(带参数): python test1.py --length 20 --wigth 10 result = 200 result = 200 '''
import argparse # 创建解析器 parser = argparse.ArgumentParser(description='示例程序') # 添加选项和参数 parser.add_argument('--input', type=str, required=True, help='输入文件路径') parser.add_argument('--output', type=str, required=True, help='输出文件路径') parser.add_argument('--verbose', action='store_true', help='是否启用详细模式') # 解析命令行参数 args = parser.parse_args() # 使用解析后的参数 print(f"输入文件: {args.input}") print(f"输出文件: {args.output}") if args.verbose: print("详细模式已启用")
2.4 命令行输入示例:
假设有一个程序 `example.py`,它可以接受两个选项 `--input` 和 `--output`,以及一个参数 `--verbose`。
python example.py --input file.txt --output result.txt --verbose
使用命令行解析器时,程序会将用户的输入解析成以下结构:
- 命令: `example.py`
- 选项:
- `--input`: `file.txt`
- `--output`: `result.txt`
- 参数:
- `--verbose`: 存在与否即为布尔值3、写成.sh文件
3.1 什么是.sh文件
SH文件通常指的是Shell脚本文件,具有.sh的后缀名,包含一系列要由操作系统的命令解释器执行的命令。是一种在UNIX/Linux操作系统中常见的脚本文件类型。它们以纯文本格式存储,使用Bash(Bourne Again SHell)或其他Unix shell(如Ksh或Csh)语言编写。SH文件主要用于执行特定的脚本命令,实现特定的功能。在Linux系统中,.sh文件通过Shell的命令行界面执行,可以用于程序开发、自动化脚本编写等任务。
- 用途:.sh文件主要用于在Unix/Linux环境中编写简单的程序和自动化脚本。
- 执行:可以通过在Shell的命令行界面中输入
sh xxx.sh
来执行.sh文件。- 编辑:.sh文件可以使用任何文本编辑器(如记事本)打开和编辑。
- 运行:在Linux系统中,.sh文件可以通过直接调用其名称(如
./test.sh
)来运行,前提是文件具有执行权限。总的来说,.sh文件是Linux和Unix系统中非常重要的文件类型,它们允许用户通过脚本执行一系列命令,从而简化复杂的操作过程或实现自动化任务。
3.2 .sh文件可以写什么?
因此上面的命令可以写进.sh文件中,
test.sh文件内容是:python test1.py --length 20 --wigth 10
.sh文件中还可以写:
#! /bin/bash echo "操作已完成,按 Enter 键继续..." #echo "……" 向终端输出…… read -p "" #read -p "" 命令来等待用户的输入。 # 当用户按下 Enter 键后,脚本会退出,并保持命令窗口打开。
3.3 #! /bin/bash的作用:
在 Shell 脚本中,
#!/bin/bash
是指定脚本使用 Bash 解释器的 shebang 语句。它出现在脚本的第一行,并告诉操作系统使用 Bash 解释器来执行该脚本。当然有很多时候不规范的写法可以忽略掉这一句,执行起来好像也是ok,结果没什么不一样 。
这只是因为在我们常用 的linux系统上默认都是执行/bin/bash来执行我们的shell脚本,但是如果有些用户使用的是csh,那么缺少第一行的“#!/bin/bash的shell脚本执行结果就可能存在语法不兼容的问题,导致结果异常或者根本不能执行。
这也是在shell中唯一以#号开头却不代表是注释的意思,其他任何地方以#号开头的语句都会被认为是注释语句而忽略执行,所以这句话只能写在 shell的开头才有效。
4、相关资料推荐:
是同一个博主的连续的连续的两篇↓:
写一个python文件,在shell脚本中运行_pycharm运行shell脚本-CSDN博客
【Python基础函数笔记】parser.add_argument详解_parser add argument-CSDN博客
相关sh文件介绍。
SH文件介绍-CSDN博客
小结
- 解析器是分析和处理输入数据的程序或组件。
- 命令行解析器专门处理命令行界面中的输入,将命令、选项和参数解析为程序可以理解的结构。