У меня есть целый набор файлов (10.000+), которые включают дату и время в имени файла. Проблема в том, что дата и время не заполнены нулями, что вызывает проблемы с сортировкой.
Имена файлов в формате: output 5-11-2018 9h0m.xml
То, что я хотел бы, чтобы это было в формате: output 05-11-2018 09h00m.xml
Я искал разные решения, но большинство, похоже, использует разделение строк и затем их рекомбинирует. Это кажется довольно громоздким, так как в моем случае день, месяц, час и минуту должны быть отделены друг от друга, дополнены и затем объединены.
Я думал, что регулярное выражение может дать мне лучшее решение, но я не могу понять это.
Я отредактировал свой исходный код, основываясь на предложении Wiktor Stribiżew, что вы не можете использовать регулярные выражения в замене и вместо них использовать группы:
import os
import glob
import re
old_format = 'output [1-9]-11-2018 [1-2]?[1-9]h[0-9]m.xml'
dir = r'D:\Gebruikers\<user>\Documents\datatest\'
old_pattern = re.compile(r'([1-9])-11-2018 ([1-2][1-9])h([0-9])m')
filelist = glob.glob(os.path.join(dir, old_format))
for file in filelist:
print file
newfile = re.sub(old_pattern, r'0\1-11-2018 \2h0\3m', file)
os.rename(file, newfile)
Но это все еще не работает полностью, как мне хотелось бы, так как это не изменило бы часов до 10. Что еще я мог попробовать?