markdown文件处理

问题描述

  1. 平常当我们在网上看到一些比较好的文章,会把文章内容的地址给记录下来,但是在遇到有些博客时,因为他部署到自己的服务器中,可能由于博主不维护了或者服务器到期了,我们过段时间再去看这个博客就会访问不到
  2. 文章内容写的很好,想摘录一大段并且添加自己的描述进行完善,但是复制的文章内容字数过多,批量格式修改困难

因为这些问题文章内容格式批量修改问题常常重复执行,因此我写了一个简单的脚本,只需要传入对应需要处理的文件目录地址即可

注:该脚本只支持 md 文件格式,如果需要其它格式,根据脚本内容进行稍微修改即可

脚本内容如下

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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
import os
import re
import sys
import shutil

# 获取文件的目录信息内容
def getAllFiles(path):
allFilesPath = dict()
allFilesRelativeDirs = dict()
for root, dirs, files in os.walk(path):
for file in files:
allFilesPath[file] = os.path.join(root, file)
allFilesRelativeDirs[file] = os.path.relpath(root)
return (allFilesPath,allFilesRelativeDirs)

#md文件处理
def disposeFile(fileName,mdFile):
with open(mdFile, 'r', encoding='utf-8') as file:
content = file.read()
# 删除标题链接
content = re.sub(r'\[#\]\(.*\) ', '', content)
# 清除目录前缀多余内容
content = re.sub(r'^[\n\s\S]*={15}','# ' + fileName.split('.')[0], content)
# 删除TIP多余提示
content = re.sub(r'TIP\n', '', content)
# 删除后面所有没用内容
content = re.sub(r'上次更新时间[\n\s\S]*', '', content)
# 添加标记语言
content = re.sub(r'```\n<', '```html\n<', content)
content = re.sub(r'```\n/', '```javascript\n/', content)
content = re.sub(r'```\nvar', '```javascript\nvar', content)
content = re.sub(r'```\nc', '```javascript\nc', content)
content = re.sub(r'```\nlet', '```javascript\nlet', content)
content = re.sub(r'```\nimport', '```javascript\nimport', content)
content = re.sub(r'```\nfunction', '```javascript\nfunction', content)
content = re.sub(r'```\n{', '```json\n{', content)
content = re.sub(r'```\n"', '```json\n"', content)
content = re.sub(r'```\n#', '```shell\n#', content)
return content

# 处理文件
def processFiles(filesPath, path,outputDir):
for fileName,fileRealPath in filesPath.items():
outputNewDir = os.path.join(path,'处理结果',outputDir[fileName])
if not os.path.exists(outputNewDir):
os.makedirs(outputNewDir)
if fileName.endswith('.md'):
content = disposeFile(fileName,fileRealPath)
outputNewPath = os.path.join(outputNewDir,fileName)
with open(outputNewPath, 'w', encoding='utf-8') as output_file:
output_file.write(content)
print(os.path.basename(fileName) + "\t==已完成==")
else:
if fileName.find("bulletin-box"):
shutil.copy(fileRealPath,outputNewDir)

# 调用执行
def main():
if len(sys.argv) > 1:
path = sys.argv[1]
else:
path = os.getcwd()
allFilesPath,allFilesRelativeDirs = getAllFiles(path)
processFiles(allFilesPath,path,allFilesRelativeDirs)

if __name__ == '__main__':
main()