Python接收解析用户输入参数(多种方法)
方式一:
import sys, getopt
if ( __name__ == '__main__' )  or  ( __name__ == 'main' ) :
        ## 参数0 是文件名+后缀
        ## 参数一
	Name = sys.argv[1];
        ## 参数二
	age = sys.argv[2];
        ## 检查参数个数
	argc = len( sys.argv );                  
	if ( argc < 1 ) : 
		print (missingParms % locals()); 
		sys.exit()
用户输入:
python test.py lucy 23
名字年龄位置必须固定
方式二:
## 导入包
import getopt, sys
## 帮助
def Usage():
    print("\nUsage:")
    print(f'''
    方式一:向导模式
    python3 {sys.argv[0]}
    
    方式二:命令行直接输入参数
    python3 {sys.argv[0]} -d example{path_str}linux-cmd [-D description.json]
    
    Opthon:
        -d,--user_dir    指定 html 文件的存放目录
        -D,--Description 描述 html 的参考文件,[可选]。
         如:scp.html文件介绍,就可以在 -D 参数指定的 json 格式文件里查询
        -i,--detailed_information 显示详细执行过程,默认不显示
             
    示例:
        没有参考文件命令
        python3 {sys.argv[0]} -d example{path_str}linux-cmd
        
        有参考文件命令
        python3 {sys.argv[0]} -d example{path_str}linux-cmd -D data.json
             
    ''')
## 参数获取
try:
    opts, args = getopt.getopt(sys.argv[1:], "hid:D:",["help", "detailed_information","user_dir=", "Description="])
except getopt.GetoptError:
    print("\n[ Error] 未知参数,请检查。")
    ## 输入错误显示帮助
    Usage()
    sys.exit(-3)
## 参数解析
for opt, arg in opts:
    if opt in ("-h", "--help"):
        ## 显示帮助
        Usage()
        sys.exit(-4)
    elif opt in ("-i", "--detailed_information"):
        ## 是否显示详细执行过程; True = 显示 、 False = 不显示
        detailed_information = True
        print("630_detailed_information = ", detailed_information)
    elif opt in ("-d", "--user_dir"):
        ## html 目录
        user_object_Dir = arg
    elif opt in ("-D", "--Description"):
        ## 参考文件
        user_Description_file = arg
用户输入:
python test.py -i -d test/mdfile -D test/mdfile/data.json
参数 -i 后不需要参数,-d 和 -D 后要加入参数; 选项和选项参数
python test.py -D test/mdfile/data.json -i -d test/mdfile 或 python test.py -D test/mdfile/data.json -d test/mdfile -i
选项之间没有前后关系。但是选项后的参数不能乱,比如 -d test/mdfile/data.json -D test/mdfile 这样就是错误的。
方式三:推荐,据说是现在大佬都在用的方法 来源
文件名:md2h-ceshi.py
## 导入包
import optparse
if __name__ == '__main__':
    mdopt = optparse.OptionParser()
    mdopt.add_option('-t', '--template', dest='template', type='string', default='a', help='template file.')
    mdopt.add_option('-x', '--extensions', dest='extensions', type='string', default='', help='extensions.')
    mdopt.add_option('-o', '--output', dest='output', type='string', default='', help='output file.')
    mdopt.add_option('-d', '--deny', dest='deny', type='string', default='', help='deny file.')
    options, args = mdopt.parse_args()
    print('\nshow: {}  {}'.format(options, args))
    
    template=options.template,
    extensions=options.extensions.split(','),
    output=options.output,
    deny=options.deny.split(','),
    md=args
    print("\nshow_2: %s, %s, %s, %s, %s\n" % (template, extensions, output, deny, md))
    print("template 类型:", type(template))
    print("extensions 类型:", type(extensions))
用户输入:
python md2h-ceshi.py -t s -x f,d -o c -d a,b
 -
方式四:
文件名:argparse-ceshi.py 来源
# 导入库
import argparse
 
# 1. 定义命令行解析器对象
parser = argparse.ArgumentParser(description='Demo of argparse')
 
# 2. 添加命令行参数
parser.add_argument('--epochs', type=int, default=30)
parser.add_argument('--batch', type=int, default=4)
parser.add_argument('-s', type=str, default='')
 
# 3. 从命令行中结构化解析参数
args = parser.parse_args()
print(args)
epochs = args.epochs
batch = args.batch
s = args.s
print('show {}  {} {}'.format(epochs, batch, s))
用户输入:
python argparse-ceshi.py --epochs 20 --batch 5 -s aa
 -
方式五:
文件名:t_args.py
#!/usr/bin/env python import sys # 把参数用strip分割成列表 sys.argv = [i.strip() for i in sys.argv] ## 用下标访问列表内容,并赋值 region_id = sys.argv[1] secret_id = sys.argv[2] secret_key = sys.argv[3] print(region_id, secret_id, secret_key)
用户输入:
python t_args.py 20 33 key
 
方式六: 字典键值匹配方式
bootimg.exe 来源:https://www.cnblogs.com/wutou/p/19126578
文件名: t1.py
import sys
def unpack_bootimg(updata=None, debug=False):
    print("fun unpack_bootimg")
    
def unpack_updata(updata=None, debug=False):
    print("fun unpack_updata")
if __name__ == '__main__':
    ## 字典,键值组合
    functions = {
                 '--unpack-bootimg': unpack_bootimg,
                 '--unpack-updata': unpack_updata,
                }
    ## 帮助
    def usage():
        sys.stderr.write('supported arguments:')
        sys.stderr.write('\n\t')
        sys.stderr.write('\n\t'.join(sorted(functions.keys())))
        sys.stderr.write('\n')
        raise SystemExit(1)
    if len(sys.argv) == 1:
        usage()
    sys.argv.pop(0)  ## 弹出(丢弃)第0个参数,即 t1.py
    cmd = sys.argv[0] ## 获取 --unpack-updata 等参数
    function = functions.get(cmd, None) ## 通过把参数当初键来去值,值是函数名
    sys.argv.pop(0)  ## 弹出获取过的参数
    if not function:  ## 如果没有函数名,说明参数不对
        usage()
    function(*sys.argv) ## 获取到值,就是函数名,执行函数
效果:

https://www.cnblogs.com/wutou/p/19126578
 
                    
                 
                
            
         浙公网安备 33010602011771号
浙公网安备 33010602011771号