一个Python脚本,旨在遍历指定文件夹(包括其子文件夹)中的Markdown文件,并查找所有以特定字符串开头的链接,然后将这些链接记录在一个本地文本文件中。以下是代码的简要介绍:
-
首先,指定要遍历的文件夹路径,以及将匹配到的链接保存到的输出文件的名称。确保文件夹路径和输出文件名是正确的。
-
创建一个空的列表
matched_links
用于存储匹配到的链接。 -
使用正则表达式模式
pattern
来匹配以"https://pan.quark.cn/s/"
开头的链接。这个模式将匹配以特定字符串开头的完整链接。 -
使用
os.walk()
遍历文件夹及其子文件夹。对于每个Markdown文件,打开文件并读取其内容。 -
在Markdown文件的内容中,使用
re.findall()
函数和正则表达式模式来查找匹配的链接,将它们添加到matched_links
列表中。 -
打开输出文件以便写入,然后遍历
matched_links
列表,将每个匹配到的链接写入输出文件。 -
最后,程序打印匹配到的链接数量以及输出文件的位置,以便你知道找到了多少个链接并可以查看输出文件。
请确保根据实际需求和文件夹路径进行适当的替换,以便程序能够正确读取文件并将链接记录到指定的输出文件中。
import os
import re
# 指定文件夹路径,确保路径是以UTF-8编码存储的
folder_path = '/path/to/your/包含中文的文件夹'
output_file = 'output_links.txt'
# 用于存储匹配到的完整链接
matched_links = []
# 定义正则表达式模式,匹配完整的链接(以 "https://pan.quark.cn/s/" 开头)
pattern = re.compile(r'https://pan\.quark\.cn/s/[\w/]+')
# 遍历文件夹及其子文件夹
for root, dirs, files in os.walk(folder_path):
for file in files:
if file.endswith('.md'): # 仅处理Markdown文件
file_path = os.path.join(root, file)
with open(file_path, 'r', encoding='utf-8') as md_file:
content = md_file.read()
# 使用正则表达式查找匹配的完整链接
links = re.findall(pattern, content)
matched_links.extend(links)
# 将匹配到的完整链接写入本地文件
with open(output_file, 'w', encoding='utf-8') as output:
for link in matched_links:
output.write(link + '\n')
# 统计匹配到的链接数量
count = len(matched_links)
print(f"总共找到了 {count} 个完整链接以'https://pan.quark.cn/s/'开头。")
print(f"完整链接已保存到 {output_file}")