0. 缘起
问就是和Notion
分手后的阵痛
导出会有很多乱码,我忍受了一段时间终于忍不了了,掏出学了一点点的python
,写了个脚本。该脚本就是检测到当前文件 OR 文件夹名称中含有.
,就对它进行相应更改。
## 注意
请确保你已经安装python
环境,请先测试下是否满足,脚本运行后不可恢复!
以下文件名为changeFileName.py
运行命令python changeFileName.py
path
为你需要改动的本地地址。
1. 初版-只能改变 1 个文件夹下的内容
import os
# path = r'E:\ECloud\学习之路'
path = r'E:\Temp'
folder_names = os.listdir(path)
mdSuffix = '.md'
for name in folder_names:
# pic_names = os.listdir(path + '\\' + name)
isFolder = mdSuffix in name
old_name = path + '\\' +name
if isFolder:
# 先处理文件夹 只取[0]
# 文件夹下的旧文件名
# 文件夹下的新文件名
new_name = old_name.split(mdSuffix)[0]
print('old_name',old_name,'\nnew_name',new_name)
else:
# 文件夹下的新文件名
new_name = old_name+mdSuffix
print('old_name',old_name,'\nnew_name',new_name)
# 如果文件名中不含.md
# 则是md文件,处理完姓名后需要再拼接回去.md
os.rename(old_name,new_name)
2. 加强版-调用递归,改变当前文件夹下所有内容
import os
# path = r'E:\ECloud\学习之路\React'
path = r'E:\ECloud\Work'
folder_names = os.listdir(path)
# 获取拼接好的文件地址
def getFileUrl(url,name):
return url+'\\'+name
# 对文件名的处理
def getFileName(old_name,url):
# 文件夹下的新文件名
new_name = old_name.split(' ')[0]+'.md'
# 如果文件名中不含.md
# 则是md文件,处理完姓名后需要再拼接回去.md
notPic = '.png' not in old_name
# 如果不含空格,则直接退出
# 注:此处可以增加对Database的判断,我是没用到太多,就手动处理了
notHaveBlank = ' ' not in old_name
if notHaveBlank:
return
if notPic:
print('old_name',old_name,'\nnew_name',new_name)
os.rename(getFileUrl(url,old_name),getFileUrl(url,new_name))
# 是否是文件夹的判断
def isFolder(name):
return '.' not in name
# 对文件夹的处理
# *重点1:folderFunc函数为递归函数,反复调用自己,深入文件夹
def folderFunc(old_name,url):
print('old_name',old_name,'\nurl:',url)
innerNames = os.listdir(getFileUrl(url,old_name))
originUrl = url
for innerName in innerNames:
if isFolder(innerName):
url = getFileUrl(originUrl,old_name)
folderFunc(innerName,url)
else:
url = getFileUrl(originUrl,old_name)
getFileName(innerName,url)
# *重点2:一定要处理无空格的情况,否则会报错
notHaveBlank = ' ' not in old_name
if notHaveBlank:
return
# 把文件夹命名更改放在最后做
new_name = old_name.split(' ')[0]
os.rename(getFileUrl(originUrl,old_name),getFileUrl(originUrl,new_name))
# 运行python后当即进入以下代码
for name in folder_names:
url = path
if isFolder(name):
folderFunc(name,url)
else:
getFileName(name,url)