python argparse

# -*- coding: utf-8 -*-
# https://zhuanlan.zhihu.com/p/138294710
# 上述链接讲的很透彻,重点看 8.设置变量的名字或者flag
# 打印指定目录下的所有目录及文件名字

# 两种类型的变量
# position arguments 位置变量
## 位置变量必须设置;在命令行中传入的位置不能错,按照代码中加入parser的先后顺序传入.
# optional arguments 可选变量
## 必须用一条或者两条短线-作为前缀;对于程序运行不是必须的;设置后可以改变程序的行为,例如 cp -r

# 设置变量的 action 参数
# 对可选变量可以设置 action 参数。这个参数可以设置为如下值:
# store 将输入的值保存到 Namespace 实例中。(这是默认操作)直接存储命令行传入的参数,不作任何修改.
# store_const 当该可选变量在命令行被设置时,保存一个常数(需要用 const 指定,否则报错)。
# store_true 当在命令行设置该可选变量时,将会给它绑定一个布尔值 True,若不设置,则该可选变量默认绑定 False。让存true时才会存true,不让存时默认存相反的值,即false. 命令行里写上该变量名字即可!
# store_false 和 store_true 表现相反,不设置绑定的是 True,显式设定后绑定 False。
# append 保存一个列表,每次设置这个变量,都会为列表添加一个值。
# append_const 每次设置时给列表添加一个常量。
# count保存一个整数,整数的值为该参数被设置的次数。
# help 显示帮助文档并退出
# version 显示程序版本并推出

# default 如果没有命令行没有设置该变量,那么默认使用这个值.
# required 只能绑定到可选变量上,设置后default失效.
# metavar 这个设置的是在help文档中显示的变量名,用于和代码中实际使用的变量名进行区分.

# 1) import the argparse library
import argparse
import os
import sys

def parse_args():
    # 2) create the parser
    my_parser = argparse.ArgumentParser(description='list the content of a folder')
    # 传入的可选变量(optional arguments)默认用短线 - 作为前缀字符(prefix chars),这个前缀字符可以通过设置prefix_chars自定义

    # 3) add the arguments
    my_parser.add_argument('Path', metavar='path', type=str, help='the path to list')
    my_parser.add_argument('-l', '--long', action='store_true', help='enable the long listing format')    

    # 4) execute the parse_args() method
    args = my_parser.parse_args() # namespace object 这里的parse_args()是argparse库中的
    return args
    
def main():
    args = parse_args()

    input_path = args.Path
    if not os.path.isdir(input_path):
        print('The path specified does not exist.')
        sys.exit()
    # print('\n'.join(os.listdir(input_path)))
    for line in os.listdir(input_path):
        if args.long:
            size = os.stat(os.path.join(input_path, line)).st_size
            line = '%10d  %s' % (size, line)
        print(line)

if __name__ == "__main__":
    main()

reference:
https://zhuanlan.zhihu.com/p/138294710

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值