|
发表于 2021-1-3 19:07:12
|
显示全部楼层
本帖最后由 jackz007 于 2021-1-3 19:30 编辑
- import os
- def main(x , y):
- for root , dirs , files in os . walk(os . getcwd()):
- for file in files:
- ext = os . path . splitext(file)[1] . lower() # 提取文件扩展名并一律转为小写字母
- if ext in ('.py' , '.c' , '.cpp' , '.h' , '.txt'): # 根据扩展名筛选符合条件的目标文件
- fn = os . path . join(root , file) # 合成目标文件的全路径
- f = open(fn)
- c , r , d = 0 , 0 , [] # c ,r 为行号、列号计数
- try: # 防止程序因读取文件出现错误而终止运行
- for txt in f: # 风险语句,如果文件编码存在问题,执行此句会出错
- r = txt . find(x , 0) # 查找关键字,执行到此句,说明当前文件平安度过风险
- while r != - 1: # 循环查找可能出现在同一行的多个关键字
- d . append((c + 1 , r + 1))
- r = txt . find(x , r + 1)
- c += 1 # 当前行数加 1
- except Exception as e: # 如果读取文件出现错误会到这里继续
- print('*** 错误 :文件 ["%s"] ' % fn) # 报告出现错误的文件名称及其路径
- print('\t' , e) # 报告系统给出的错误类型及原因细节
- f . close() # 无论是否出现错误,都会从这里汇合继续执行
- if d:
- print('文件 ["%s"] 中找到关键字 ["%s"]' % (fn , x))
- if y == 'yes':
- for x in d:
- print('\t第 %3d 行,%3d 列' % (x[0] , x[1]))
- x = input("请将该脚本放于查找的文件夹内,请输入关键字:")
- y = input("请问是否需要打印关键字(%s)在文件夹中具体位置(yes/no):" % x)
- main(x , y)
复制代码 |
|