С учетом входного каталога:
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