автозаполнение директорий на нескольких уровнях
Развивая тему:
https://ru.stackoverflow.com/questions/1432965/Автозаполнение-директорий/1432977#1432977.
Есть директория 2022: в ней находятся папки
- 1 квартал
- Январь
- Февраль
- Март
- 2 квартал . . . .
import os
path_1= r'C:\Users\МВИДЕО\progs\prog3\2022'
for i in os.listdir(path_1):
path_2 = os.path.join(path_1,i)
for j in os.listdir(path_2):
file_name = '{}.docx'.format(j)
path_3 = os.path.join(path_2,j,j+'.docx')
print(path_3)
with open(path_3,'w') as g:
g.write('hello')
for i in os.listdir(path_1):
file_name = '{}.docx'.format(i)
path_2 = os.path.join(path_1,i,i+'.docx')
with open(path_2,'w') as f:
f.write('hello')
Задача состоит в том чтобы в каждой папке: как квартала , так и месяца нужно создать .doc с названием папки. Вот так
- 1 квартал
(1 квартал.docx)
Январь
(Январь.docx) . . .
Представленный мною код это делает, однако срабатывает только 1 раз. И если поменять циклы местами, то также выдаст ошибку. При повторном запуске выдает ошибку :
[Errno 2] No such file or directory: 'C:\Users\МВИДЕО\progs\prog3\2022\I квартал\I квартал.docx\I квартал.docx.docx' File "C:\Users\МВИДЕО\progs\prog2\ch_2.py", line 104, in with open(path_3,'w') as g:
Я так понимаю, что при переходах из одной директории в другую имена .docx дописываются даже к уже существующему на предыдущем уровне .docx (реальному ворд документу), но так как это не директория выходит ошибка.
Предполагал, что удалю все такие docx.docx и будет работать. Но из всего что читал ничего не помогло
Из того что я прочитал на эту тему: через isdir,isfile - при запуске просто все отправляет в False. unlink соответственно бесполезен.
через endwith - тоже не находит ни одного файла.
что мне нужно поправить? Ну и вообще, может есть методика по быстрому формированию папок. Например дальше мне потребуется внутри каждого месяца добавить папки с неделями. и в каждой тоже свои документы и т.д.
Заранее благодарю!
Ответы (1 шт):
Получилось!
path_1= r'C:\Users\МВИДЕО\progs\prog3\2022'
dirs = list(os.walk(path_1))
second_level = dirs[0][1]
#выборка кварталов
for i in second_level:
file_name = '{}.docx'.format(i)
path_2 = os.path.join(path_1,i,i+'.docx')
with open(path_2,'w') as f:
f.write('hello')
# создание doc для каждого квартала
a=[]
for path,subdir,files in os.walk(path_1):
for name in subdir:
a.append((os.path.join(path,name).split(",")))
a=a[4:]
a_1 =sum(a,[])
# разбивка месяцев (получение итоговой директории для каждого месяца)
for i in range(len(a_1)):
os.chdir(a_1[i])
aa = a_1[i]
ab =aa.split('\\')[-1]
file_name = '{}.docx'.format(ab)
p = os.path.join(a_1[i],ab+'.docx')
with open(p,'w') as f:
f.write('')
# создание doc для каждого месяца