小工具:从多文件中收集字符串
目标、步骤#
如果你想从很多文本文件中把一定格式的字符串收集在一起,可以使用下面的Python脚本。你需要做:
- 保存脚本,后缀为
.py
- 根据你的实际情况更改脚本中的设置部分,尤其是:
- 用正则表达式表示你要收集的字符串
- 在命令行中运行脚本(或看看右键菜单[打开方式]中有没有[Python])
- 看看
out.txt
文件中有没有你要的东西
代码#
"""
# reCollectString.py
# 收集指定路径下、指定后缀文件中的匹配字符串,并记录文件名和行号。
# 适用于Python3
# 要处理的文件编码应为:utf-8(无签名)
"""
import os, re
# 要处理的文件所在路径
DIR = "./workDir"
# 要处理的文件后缀列表
EXT = ['.txt', ".md"]
# 输出文件(含路径)
OUT_FILE = "./out.txt"
# 要查找的字符串(正则表达式),请按需设置
r = re.compile(r'\[.*?\]')
with open(OUT_FILE, "w", encoding="utf-8") as outFile:
filesNum = 1
for root, __, files in os.walk(DIR):
lesson_cut_file_list = [x for x in files if os.path.splitext(x)[1] in EXT]
for file in lesson_cut_file_list:
with open(os.path.join(root, file), "r", encoding="utf-8") as f:
# for line in f.readlines():
for index, line in enumerate(f):
lineStrip = line.strip()
finds = r.findall(lineStrip)
if finds:
for i in finds:
outLine = "{path}\t{index}\t{string}\n".format(path=os.path.join(root, file), index=index + 1, string=i)
if outLine:
outFile.write(outLine)
print(filesNum, "files done.")
filesNum += 1