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

例如 find -name a.txt 就能从所有文件中找到
grep ‘‘a’’ a.txt 就能在a.txt中找出所有的a

find -i 要不区分大小写 和 grep -i ,-n,-r 都与原来的功能一样

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()

追问

File "Untitled.py", line 12
print(f'Usage:\n{" "*4}python3 {args[0]} -name a.txt')
这个a.txt只是随便举个例而已 不用带入的吧

追答

是的

追问

如何用终端把这个函数调处来?

温馨提示:内容为网友见解,仅供参考
无其他回答
相似回答