用python3分别写出一个类似find和grep功能的函数? 200

例如find-namea.txt就能从所有文件中找到grep‘‘a’’a.txt就能在a.txt中找出所有的afind-i要不区分大小写和grep-i,-n,-r都与原来... 例如 find -name a.txt 就能从所有文件中找到
grep ‘‘a’’ a.txt 就能在a.txt中找出所有的a

find -i 要不区分大小写 和 grep -i ,-n,-r 都与原来的功能一样
展开
 我来答
waketzheng
2018-03-20 · TA获得超过644个赞
知道小有建树答主
回答量:566
采纳率:63%
帮助的人:150万
展开全部

grep用的少,不熟悉,给个find的你参考一下吧

#!/usr/bin/env python3.6
import os
import sys


def find(args=sys.argv):
    ignore = '-i' in args
    dirname = '.' if args[1].startswith('-') else args[1]
    fname = args[args.index('-name')+1].strip('"\'')
    for r, ds, fs in os.walk(dirname):
        for fn in fs:
            if fn == fname or (ignore and fn.lower() == fname.lower()):
                print(os.path.join(r, fn))

def main():
    find()

if __name__ == '__main__':
    main()
更多追问追答
追问
但他显示这样啊
Traceback (most recent call last):
File "/Users/liuzhenyu/Documents/Untitled.py", line 19, in
main()
File "/Users/liuzhenyu/Documents/Untitled.py", line 16, in main
find()
File "/Users/liuzhenyu/Documents/Untitled.py", line 8, in find
dirname = '.' if args[1].startswith('-') else args[1]
IndexError: list index out of range
>>>
追答
#!/usr/bin/env python3.6
import os
import sys


def find(args=sys.argv):
    ignore = '-i' in args
    try:
        dirname = '.' if args[1].startswith('-') else args[1]
        fname = args[args.index('-name')+1].strip('"\'')
    except IndexError:
        print(f'Usage:\n{" "*4}python3 {args[0]} -name a.txt')
        return
    for r, ds, fs in os.walk(dirname):
        for fn in fs:
            if fn == fname or (ignore and fn.lower() == fname.lower()):
                print(os.path.join(r, fn))

def main():
    find()

if __name__ == '__main__':
    main()
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式