假设我有大量文件,需要对其进行格式化以使应用程序可以更好地访问它们。
当前文件名可能如下所示:
035 - Springfield, MA.pdf
我的应用程序引用对象的方式是通过文件的前缀ID来实现的,因此我开始在下面着手批量重命名:
def rename(dir, pattern):
import glob, os
for pathAndFilename in glob.iglob(os.path.join(dir, pattern)):
title, ext = os.path.splitext(os.path.basename(pathAndFilename))
print(title)
os.rename(pathAndFilename,
os.path.join(dir, % title + ext))
现在,我可以传递以下命令来重命名所有地图:
import scripts as a
a.rename(r'c:\tools\storeMaps', r'*.pdf')
我希望文件名的输出仅是ID +映射,所以我知道我可以相当容易地加入map
,但是在有效地从文件名中删除所有非数字时遇到了一些麻烦。
答案 0 :(得分:0)
我发现re
的喜悦解决了这个问题。
def rename(dir, pattern):
import glob, os, re
for pathAndFilename in glob.iglob(os.path.join(dir, pattern)):
title, ext = os.path.splitext(os.path.basename(pathAndFilename))
print(title)
new_title = re.sub("\D", "", title)
os.rename(pathAndFilename,
os.path.join(dir, new_title + ext))
new_title = re.sub("\D", "", title)
将删除title
中的所有非数字。