переименовать файлы в папке папки в родительскую папку? - PullRequest
1 голос
/ 14 января 2020

У меня есть пакет папок с именем, основанным на дате. В каждой папке есть папка, в которой они имеют одинаковые имена файлов.

Есть ли способ переименовать файлы, чтобы они стали уникальными в зависимости от структуры каталогов (которая представляет собой родительскую папку (первая папка), которая основана на дате), в которой они хранятся.

 \user\date\1_2_2019\ABC\0001.csv -> abc_1_2_2019.csv

 \user\date\1_3_2019\JKL\0001.csv -> JKL_1_3_2019.csv

 \user\date\1_4_2019\XYZ\0001.csv -> XYZ_1_4_2019.csv

 \user\date\1_5_2019\123\0001.csv -> 123_1_5_2019.csv

 \user\date\1_6_2019\456\0001.csv -> 456_1_6_2019.csv

Я знаю, что базовый c python код для доступа ко всем файлам это

  import os
   for dirname, _, filenames in os.walk('\user\date'):
     for filename in filenames:
       print(os.path.join(dirname, filename))

Но есть ли код python для изменения всех имен файлов добавить как минимум дату родительского файла в начале имени.

заранее спасибо!

1 Ответ

1 голос
/ 14 января 2020

Вот одностороннее использование pathlib из python 3.4+ и f-строк из python 3.6 +

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

from pathlib import Path

path = Path(r'C:\Users\datanovice\Documents\Excels').rglob('*.csv')
# remove r string if you're on macos.

files = [f for f in path] 


for file in files:
    parent_1 = file.parent.name
    parent_2 = file.parent.parent.name
    file.rename(Path(file.parent,f"{parent_1}_{parent_2}{file.suffix}"))
    print(f"{file.name} --> {parent_1}_{parent_2}{file.suffix}")
#1.csv --> ABC_1_2_2019.csv
#1.csv --> ABC_2_2_2019.csv

результат

for f in files:
    print(f)
C:\Users\datanovice\Documents\Excels\1_2_2019\ABC\1.csv
C:\Users\datanovice\Documents\Excels\2_2_2019\ABC\1.csv
#after
for f in files:
    print(f)
C:\Users\datanovice\Documents\Excels\1_2_2019\ABC\ABC_1_2_2019.csv
C:\Users\datanovice\Documents\Excels\2_2_2019\ABC\ABC_2_2_2019.csv
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...