Python 标准库学习之argparse

argparse.ArgumentParser

class argparse.ArgumentParser(prog=None,  usage=None, description=None,  epilog=None,  parents=[],   formatter_class=argparse.HelpFormatter, prefix_chars='-', fromfile_prefix_chars=None, argument_default=None, conflict_handler='error', add_help=True, allow_abbrev=True) 
Create a new ArgumentParser object. All parameters should be passed as keyword arguments. Each parameter has its own more detailed description below, but in short they are:

prog - The name of the program (default: sys.argv[0]) 
usage - The string describing the program usage (default: generated from arguments added to parser) 
description - Text to display before the argument help (default: none) 
epilog - Text to display after the argument help (default: none) 
parents - A list of ArgumentParser objects whose arguments should also be included 
formatter_class - A class for customizing the help output 
prefix_chars - The set of characters that prefix optional arguments (default: ‘-‘) 
fromfile_prefix_chars - The set of characters that prefix files from which additional arguments should be read (default: None) 
argument_default - The global default value for arguments (default: None) 
conflict_handler - The strategy for resolving conflicting optionals (usually unnecessary) 
add_help - Add a -h/–help option to the parser (default: True) 
allow_abbrev - Allows long options to be abbreviated if the abbreviation is unambiguous. (default: True) 

ArgumentParser.add_argument

ArgumentParser.add_argument(name or flags...[, action][, nargs][, const][, default][, type][, choices][, required][, help][, metavar][, dest]) 
Define how a single command-line argument should be parsed. Each parameter has its own more detailed description below, but in short they are:

name or flags - Either a name or a list of option strings, e.g. foo or -f, --foo. 
action - The basic type of action to be taken when this argument is encountered at the command line. 
nargs - The number of command-line arguments that should be consumed. 
const - A constant value required by some action and nargs selections. 
default - The value produced if the argument is absent from the command line. 
type - The type to which the command-line argument should be converted. 
choices - A container of the allowable values for the argument. 
required - Whether or not the command-line option may be omitted (optionals only). 
help - A brief description of what the argument does. 
metavar - A name for the argument in usage messages. 
dest - The name of the attribute to be added to the object returned by parse_args(). 

目录树2.0

from pathlib import Path
import sys
import os.path
import argparse


def getArgs():
    parser = argparse.ArgumentParser(prog = 'Dirtree', description = 'This program is mainly programmed to help you to list a directory tree from a given path')
    parser.add_argument('--path', '-p', help = 'start path', default = '.')
    parser.add_argument('--smaller', '-s', type = lambda x : int(x) * 1024, help = 'list file smaller than given KB', default = None)
    parser.add_argument('--larger', '-l', type = lambda x : int(x) * 1024, help = 'list file larger than given KB', default = None)
    parser.add_argument('--mode', '-m', help='search file fit the given mode', default='*.*')
    parser.add_argument('--forbid', '-f', help='forbid to list dirtree, just list the abspath', action = 'store_true')
    args = parser.parse_args()
    return args

def filesizeOK(p, s, l):
    if s and l:
        return l <= os.path.getsize(p) <= s
    elif s:
        return os.path.getsize(p) <= s
    elif l:
        return l <= os.path.getsize(p)
    else:
        return True


def lst_tree(p, n, s, l, m, f):
    if p.is_file() and filesizeOK(p, s, l) and p.match(m):
        if not f:
            print('|' + '\t|' * n + '-' * 4 +  p.name)
        else:
            print(os.path.abspath(p))
    elif p.is_dir():
        if not f:
            print('|' + '\t|' * n + '-' * 4 +  str(p.relative_to(p.parent)) + '\\')
        for pt in p.iterdir():
            lst_tree(pt, n + 1, s, l, m, f)

if __name__ == "__main__":
    args = getArgs()
    lst_tree(Path(args.path), 0, args.smaller, args.larger, args.mode, args.forbid)

参数说明:
-p 起始目录
-s 文件最大KB
-l 文件最小KB
-m 搜索符合模式文件
-f 不用目录树,打印绝对路径

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值