用 Python 从多个文件中提取信息并汇总

用 Python 从多个文件中提取信息并汇总

谷月姐最近需要对所有博客文章进行统计整理。每篇博文的源代码开头都有一段 YAML 代码,存储了这篇文章的一些信息。我的需求是:把每篇博文开头 YAML 代码中的 datebanner_img 字段连同它们的数据一起提取出来,汇总到同一个 CSV 文件,便于后续用 Excel 分析。

博客文章开头的 YAML 代码

博客有 100 多篇文章,如果手工操作,要重复 100 多次。还是编程解决更方便一些。

我从来没学过 Python,为了完成这项要重复 100 多次的工作,在谷歌、知乎和 CSDN 的帮助下,现学现卖,硬是通过复制粘贴网上的代码,写了一个 Python 程序。这是我第一个 Python 程序

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#!/usr/bin/python
# -*- coding: UTF-8 -*-

# 打开目标文件(要把某个目录所有文件中的特定字符串写入到目标文件),注意编码为utf-8-sig,即带BOM的UTF-8,如果不带-sig后缀,Excel无法识别生成的CSV文件
f=open("output.csv", "w", encoding='utf-8-sig')

# 这是博文源代码所在的目录,注意路径要写两个反斜杠,转义字符
target_path='C:\\Users\\kukmoon\\kukmoon_blog\\source\\_posts'

# 遍历目录中的所有文件
import os
for dirpath, dirnames, filenames in os.walk(target_path):
for filename in filenames:
file_full_name=os.path.join(dirpath,filename)

# 对单个文件进行操作
with open(file_full_name, "r", encoding='utf-8') as file: #打开文件,文件编码是UTF-8
(file_path, file_name)=os.path.split(file_full_name) # 获取不带路径的文件名file_name
lines = file.readlines() # 读取文件所有的行
for line in lines: # 建立一个循环,搜索含有特定字符串的行,并提取这一行的内容
if "banner_img:" in line: # 如果该行含有特定字符串的行,就提取这一行的内容
file_banner_img=line.replace("\n","") # 去掉该行末尾的换行符,放到一个变量里面
if "date:" in line:
file_date=line.replace("\n","") # 去掉该行末尾的换行符,放到一个变量里面
print(file_name,file_banner_img,file_date,sep=",",file=f) # 打印上述变量,注意分隔符sep是英文逗号

f.close() # 关闭目标文件

然后,用 Excel 打开生成的 CSV 文件,如图所示。

output.csv(已经设置了视觉效果)


图片版权

题图:Image by macrovector on Freepik。

头图:该图片由 David MarkPixabay 上发布。


求扫码打赏
“我这么可爱,请给我钱 o(*^ω^*)o”

用 Python 从多个文件中提取信息并汇总
https://blog.kukmoon.com/0a9fce634652/
作者
Kukmoon谷月
发布于
2023年8月6日
许可协议