>>返回Python系列文章目录<<
pycparser是python的一个用于解析C语言的第三方库,用于获取C语言的语法树
argparse模块是Python的第三方库,需要安装
pip install pycparser
pycparser模块导入方式
# parser_file 用于处理c语言文件 from pycparser import parse_file # c语言有错误时,会引出此错误 from pycparser.plyparser import ParseError # c_ast.py 文件下包含了抽象语法树的节点类 from pycparser.c_ast import *
① 使用以下方法创建parser类:
ast = parse_file(filename, use_cpp = False) # fake_libc_include文件夹放在处理的c语言目录下 ast = parse_file(filename, use_cpp = True, cpp_path=r'C:\MinGW\bin\gcc.exe', cpp_args=r'-I./fake_libc_include')
parse_file 的参数 | 说明 |
---|---|
use_cpp | 是否使用本地c语言编译器预处理代码,去掉其中的#命令(头文件、宏定义、pragma) |
cpp_path | 本地c语言编译器路径 |
cpp_args=r'-I./fake_libc_include' | fake_libc_include文件夹路径,use_cpp=True 时使用,需要从官网下载 |
② 使用以下方法给parser增加一个参数:
parser.add_argument()
add_argument 的参数 | 说明 |
---|---|
default= | 没有设置值情况下的默认参数 |
required= | 如果设置了required=True ,则在实际运行的时候不设置该参数将报错 |
type= | 默认的参数类型是str类型,如果你的程序需要一个整数或者布尔型参数,你需要设置type=int 或type=bool |
choices=[] | 参数值只能从几个选项里面选择 |
help='' | 指定参数的说明信息,在命令行用-h起效 |
dest= | argparse默认的变量名是–或-后面的字符串,但是你也可以通过dest=xxx来设置参数的变量名,然后在代码中用args.xxx来获取参数的值 |
nargs= | 设置参数在使用可以提供的个数N 参数的绝对个数(例如:3)? 0或1个参数* 0或所有参数+ 所有,并且至少一个参数 |
③ 使用以下方法获得参数解析结果:
args = parser.parse_args()
import argparse def get_args(): parser = argparse.ArgumentParser(description='argparse') parser.add_argument('--cd', '-c', help='working direction', required=True) parser.add_argument('--debug', '-d', choices=['N', 'Y'], default='N', required=False, help='debug mode, print all') args = parser.parse_args() return args if __name__ == '__main__': args = get_args() if(args.debug == 'Y') # code
在命令行通过以下方式调用:
python test.py -c C:/ -d Y
或者生成exe后调用
test -c C:/ -d Y