반응형

특정 경로의 파일 목록을 리스트에 저장하는 파이썬 예제 코드입니다.



2021. 12. 27  최초작성



다음 구조의 디렉토리를 생성한 후, 진행했습니다.

 




첫번째 버전

 

파일 이름  목록에 경로를 추가합니다.

 

import os


path = './root'

for root, dirs, files in os.walk(path):

    if len(files) > 0:

        files.sort()

        for i in range(len(files)):
            files[i] = root + '/' + files[i]
       
        print(files)




['./root/ab/a/a1', './root/ab/a/a2', './root/ab/a/a3']

['./root/ab/b/b1']

['./root/cd/c/c1', './root/cd/c/c2', './root/cd/c/c3', './root/cd/c/c4']

['./root/cd/d/d1', './root/cd/d/d2', './root/cd/d/d3', './root/cd/d/d4', './root/cd/d/d5']





두번째 버전

 

마지막 디렉토리 이름을 키로 하여 파일 목록을 딕셔너리에 저장합니다.



import os


path = './root'

dict = {}

for root, dirs, files in os.walk(path):

    if len(files) > 0:
        list_dir = root.split('/')
        print('key ', list_dir[-1])
        # print('dirs', dirs)

        files.sort()

        for i in range(len(files)):
            files[i] = root + '/' + files[i]


        key = list_dir[-1]
        dict[key] = files


print(dict)



key  a

key  b

key  c

key  d

{'a': ['./root/ab/a/a1', './root/ab/a/a2', './root/ab/a/a3'], 'b': ['./root/ab/b/b1'], 'c': ['./root/cd/c/c1', './root/cd/c/c2', './root/cd/c/c3', './root/cd/c/c4'], 'd': ['./root/cd/d/d1', './root/cd/d/d2', './root/cd/d/d3', './root/cd/d/d4', './root/cd/d/d5']}




세번째 버전

폴더 경로를 조합하여 문자열 만들어 딕셔너리의 키로 사용합니다.



import os


path = './root'

dict = {}

for root, dirs, files in os.walk(path):

    if len(files) > 0:
        list_dir = root.split('/')

        str_dir = '-'.join(list_dir[1:])

        files.sort()

        for i in range(len(files)):
            files[i] = root + '/' + files[i]


        key = str_dir
        dict[key] = files


print(dict)



{'root-ab-a': ['./root/ab/a/a1', './root/ab/a/a2', './root/ab/a/a3'], 'root-ab-b': ['./root/ab/b/b1'], 'root-cd-c': ['./root/cd/c/c1', './root/cd/c/c2', './root/cd/c/c3', './root/cd/c/c4'], 'root-cd-d': ['./root/cd/d/d1', './root/cd/d/d2', './root/cd/d/d3', './root/cd/d/d4', './root/cd/d/d5']}



참고

 

https://stackoverflow.com/a/19017207



문제 발생시 지나치지 마시고 댓글 남겨주시면 가능한 빨리 답장드립니다.


제가 쓴 책도 한번 검토해보세요 ^^

+ Recent posts