学习Python纪录Day28 - 在多文字档中搜寻关键字

在多文字档中搜寻关键字

  • 第一层for回圈使用了os.walk()递回取得路径下的所有档案
  • 第二层for回圈依序处理.txt、.py、.c三中副档名的档案
  • fnmatch.filter()过滤符合副档名的档案
import os, fnmatch

path = "./text"
keyword = "for"

for root, dirs, files in os.walk(path):
	for ext in ['txt', 'py', 'c']:
		for fname in fnmatch.filter(files, '*.' + ext):
			file = os.path.join(path, fname)
			with open(file, "r") as fp:
				num = 1
				for line in fp.readlines():
					if keyword in line:
						print("档案: ", fname)
						print(num, ":", str(line))
					num = num + 1

改用正规表达是搜寻关键字if和for

import os, fnmatch

path = "./text"
pattern = re.compile(‘for’ |’if’)

for root, dirs, files in os.walk(path):
	for ext in ['txt', 'py', 'c']:
		for fname in fnmatch.filter(files, '*.' + ext):
			file = os.path.join(path, fname)
			with open(file, "r") as fp:
				num = 1
				for line in fp.readlines():
					if re.search(pattern, line):
						print("档案: ", fname)
						print(num, ":", str(line))
					num = num + 1

<<:  Day30:附魔

>>:  自动化工作 - APScheduler

Day 23 -资料库应用小程序 资料库设计(系统需求分析)

完善的资料库能够有效地存储数据,提供最新、最精确的资讯,满足使用者的应用需求,因此正确的资料库结构设...

[Day 09] tinyML开胃菜Arduino IDE上桌(下)

书接上回[Day 08] tinyML开胃菜Arduino IDE上桌(上)。 单机版IDE Ard...

[Day2]什麽是区块链?

Hi~今天要介绍什麽是区块链!会分成五个部分,分别是定义、起源、特性、优点、缺点! 定义 当你听到...

新新新手阅读 Angular 文件 - Interpolation(2) - Day14

文章内容 本章内容为阅读官方文件有关 interpolation 的笔记内容。 Expression...

28 JavaScript 的基础:AJAX 和 SetTimeout()

AJAX即「Asynchronous JavaScript and XML」(非同步的JavaSc...