본문 바로가기

카테고리 없음

Python 하위 디렉토리까지 생성, 파일 경로에서 확장자까지 분리하기

728x90

Python을 하다보면 디렉토리까지 구분하면서 파일을 만들어야 할 때가 있습니다.

예를들면 경매 낙찰 가격 데이터를 매일 수집해서 저장 할 때 날짜별로 디렉토리를 만들고 각 품목 ID별로도 디렉토리를 만드는 경우가 그렇겠습니다.

 

날짜는 매일 바뀌기 때문에 디렉토리도 매일 만들어 주어야 합니다. 그래서 디렉토리를 만드는 기능을 만들어 놓아야 매일 수동으로 하지 않아도 되겠지요?

 

하위디렉토리까지 생성하기

os.makedirs()

os.makedirs()를 이용하면 하위 디렉토리까지 한번에 만들 수 있습니다.

import os

path = '/etc/level1/level2/hello.txt'

os.makedirs(path)

결과

경로, 파일명 분리하기

os.path.split()

위 코드에서는 원래 hello.txt라는 파일을 만들고 싶었습니다만 hello.txt라는 디렉토리가 만들어졌습니다.

import os

path = '/etc/level1/level2/hello.txt'

location, filename = os.path.split(path)
print(f'location:{location}, filename:{ filename }')

결과

location:/etc/level1/level2, filename:hello.txt

 

 

확장자(ext) 분리하기

os.path.splitext()

import os

path = '/etc/level1/level2/hello.txt'

location, filename = os.path.split(path)
print(f'location:{location}, filename:{ filename }')

name, ext = os.path.splitext(filename)
print(f'name:{ name }, ext:{ ext }'

name, ext = os.path.splitext(filename)

 

확장자만 분리하고 싶을 땐 splitext()를 씁니다.

 

[]받아서 json으로 저장

def save_data(data, target_filename):
    #filename, path분리하기
    location, filename = os.path.split(target_filename)

    # dir이 없다면 생성합니다.
    print(os.path.isdir(location))
    if not os.path.isdir(location):
        os.makedirs(location)

    # file저장
    with open(target_filename, 'w+') as f:
        f.write(json.dumps(data))
        print(f'{target_filename} saved...')

 

현재 파일이 위치한 곳을 루트로

jupyter notebook에서 root를 현재 파일이 있는 곳으로 하지 않고 다른 곳을 root로 인식한 경우 사용

import os
os.chdir(os.getcwd())

 

end.

 

 

728x90
블로그 주인장입니다. 원하시는 정보는 얻으셨나요? 이 포스트에서 추가로 필요한 정보가 있으시면 여기에 남겨주세요.