【笨办法学python 进阶版】【ex07_grep】笨办法实现--grep部分命令

今天学了第七课,grep命令,实现了

test_grep.py  pathlib  *.py  -r
test_grep.py  pathlib  *.py 

可以实现正则匹配搜寻的文件 *.py *.conf之类的配置文件
test_grep.py 和原作者的版本稍有不同
入下:

import re, argparse
from pathlib import Path

def get_connet(keyword, search_path, flag= False):
    regex = re.compile(keyword)
    if flag:
        search_filedir = Path('./').rglob(search_path or "*")
    else:
        search_filedir = Path('./').glob(search_path or "*")
    for dir_file in search_filedir:
        if dir_file.is_file():
            with open(str(dir_file), 'r', encoding='utf-8') as f:
                for line in f.readlines():
                    if regex.search(line):
                        print('{}\t {}'.format(dir_file, line), end='')

def parse_args():
    parse = argparse.ArgumentParser()
    parse.add_argument("keyw")
    parse.add_argument("searchfile")
    parse.add_argument("-r", "--recursion", action="store_true")
    return parse.parse_args()

args = parse_args()
get_connet(args.keyw, args.searchfile, args.recursion)

说明

原作者实现的命令是

python3.6 grep.py line grep.py

我的使用环境python3.7 pycharm环境
注:1、是在指定的文件里面去查找,所以可以直接open那个文件,而我是在 Path(’./’).rglob(search_path or “*”)这默认指定了当前目录了;
2、作者一直这样使用输入的参数,

args.start[0], args.pattern[0]

我很不理解,后来发现是parse_args()函数中的parse.add_argument 我没有配置
“nargs=1” 这个参数,如果配置了输入的参数就会变成list了,而没配置这个参数,默认是str,这里一定要注意;
3、另外作者视频语速太快了,最好是0.75语速看,我自己做完,再看他的讲解也感觉好快。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值