У меня есть следующая проблема: в моих каталогах у меня есть множество папок, все из которых содержат файлы csv с именами в следующем формате:
00000562834-2018-07-27-file-8.csv
Чтобы сделать эти файлы доступными по масштабу в python, мне нужно вставить имя в форму формулы ("xxxxxxxxxxxx-year-month-day-file-hour"). Однако первые цифры (в данном случае 00000562834) являются случайными, поэтому я не могу создать код, который автоматически использует все файлы.
Поэтому мой вопрос: знает ли кто-нибудь, как я могу удалить эти первые 12 цифр во всех моих файлах csv.files? К сожалению, изменение вручную не будет масштабироваться.
Здесь используется решение с использованием pathlib и метода rglob
.
from pathlib import Path
rootfolder = '/home/nicolaso/foo/bar/' # example
for f in Path(rootfolder).rglob('*-file-*.csv'):
new_name = f.name.split('-', 1)[1]
f.rename(f.with_name(new_name))
Если вы действительно не хотите переименовывать файлы, вы можете просто обработать их в цикле for в любом случае.
Использование Regex. re.sub
import re
s = "00000562834-2018-07-27-file-8.csv"
print( re.sub(r"\d{11}-", "", s) )
Выход:
2018-07-27-file-8.csv
import os
import glob
import re
for file in glob.glob("*.csv"):
os.rename(file, re.sub(r"\d+-", "", file))