Python: просмотр каталога и сохранение всех папок, папок и файлов в csv-файле. - PullRequest
0 голосов
/ 01 апреля 2020

У меня есть каталог, полный музыки c. Каждая папка соответствует одной интерпретации и содержит папки для каждого альбома. В этой папке-альбоме все названия сохранены. Таким образом, мы получаем эту структуру:

  • Интерпретировать A

    • Альбом A
      • Заголовок 01
      • Заголовок 02
    • Альбом B
    • ...
  • Интерпретация B

и и так далее.

Теперь я хочу пройтись по этому каталогу, прочитать все имена папок и сохранить их в CSV-файле следующим образом:

  • Интерпретировать A, Альбом A, Название 01
  • "", "", заголовок 02
  • "", "", заголовок 03
  • "", альбом B, заголовок 01

В конце я могу открыть файл csv в excel и получить хорошо структурированную базу данных моей папки musi c.

Что я сейчас сделал:

import csv
import os

PATH = "D:\Desktop\MusikAlt"
INTERPRETEN = []
ALBEN = []
TITEL = []


for Interpret, Album, Titel in os.walk(PATH):
    print('The current folder is ' + Interpret)
    INTERPRETEN.append(Interpret)

    for album in Album:
        print('Albums from the interpret: ' + Interpret + ': ' + album)
        ALBEN.append(album)

    for titel in Titel:
        print(titel)
        TITEL.append(titel)

    print('')

I ' Сейчас я пытаюсь изменить список до нужной структуры и передать их в CSV-файл. Есть идеи?

С благодарностью, спасибо!

1 Ответ

0 голосов
/ 02 апреля 2020

С учетом входного каталога:

C:\DEMO
├───Interpret A
│   ├───Album A
│   │       Title 01
│   │       Title 02
│   │
│   └───Album B
│           Title 03
│           Title 04
│
└───Interpret B
    ├───Album C
    │       Title 05
    │       Title 06
    │
    └───Album D
            Title 07
            Title 08

Этот код будет делать то, что вы хотите. Если в заголовках musi c есть символы, не входящие в ASCII, encoding='utf-8-sig' гарантирует, что данные будут прочитаны и правильно отображены в Excel. newline='' является требованием документации csv и не позволяет Excel делать двойной интервал между строками данных.

import csv
import os

PATH = r"C:.\demo"

with open('data.csv','w',newline='',encoding='utf-8-sig') as f:
    w = csv.writer(f)

    # Write a header row
    w.writerow('Interpret Album Title'.split())

    # path is the current directory being walked.
    # dirs is a list of the directories in this path.  It can be edited to skip directories.
    # files is a list of files in this path.
    for path,dirs,files in os.walk(PATH):
        for file in files:
            # Join the path to the current file.
            current = os.path.join(path,file)
            # Remove the root path.
            # Split the remaining "Interpret\Album\Title" into a list.
            row = os.path.relpath(current,PATH).split(os.sep)
            w.writerow(row)

data.csv:

Interpret,Album,Title
Interpret A,Album A,Title 01
Interpret A,Album A,Title 02
Interpret A,Album B,Title 03
Interpret A,Album B,Title 04
Interpret B,Album C,Title 05
Interpret B,Album C,Title 06
Interpret B,Album D,Title 07
Interpret B,Album D,Title 08
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...