Переименование нескольких файлов CSV

1

У меня есть следующая проблема: в моих каталогах у меня есть множество папок, все из которых содержат файлы csv с именами в следующем формате:

00000562834-2018-07-27-file-8.csv

Чтобы сделать эти файлы доступными по масштабу в python, мне нужно вставить имя в форму формулы ("xxxxxxxxxxxx-year-month-day-file-hour"). Однако первые цифры (в данном случае 00000562834) являются случайными, поэтому я не могу создать код, который автоматически использует все файлы.

Поэтому мой вопрос: знает ли кто-нибудь, как я могу удалить эти первые 12 цифр во всех моих файлах csv.files? К сожалению, изменение вручную не будет масштабироваться.

  • 1
    Есть только один файл в день / час? Если вы удалите первую часть имен файлов, разве вы не столкнетесь с именами?
Теги:
renaming

3 ответа

0
Лучший ответ

Здесь используется решение с использованием 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 в любом случае.

  • 0
    Большое спасибо! Это именно то, что я искал.
0

Использование 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
0
import os
import glob
import re

for file in glob.glob("*.csv"):
    os.rename(file, re.sub(r"\d+-", "", file))

Ещё вопросы

Сообщество Overcoder
Наверх
Меню