728x90

파이썬은 파일 경로 또는 디렉토리와 관련한 코드가 많이 필요

파일 및 디렉토리 경로에 관한 함수는 모두 os 모듈을 사용하기 때문에 os 모듈의 import가 필요

 

 

현재 작업 폴더 얻기: os.getcwd() 

get current working directory

print(os.getcwd())# /Users/evan/dev/python/web-crawler-py/parsed_data

디렉토리 변경: os.chdir(path)

특정 경로에 대해 절대 경로 얻기: os.path.abspath(path)

경로 중 디렉토리명만 얻기: os.path.dir(path)

경로 중 파일명만 얻기: os.path.basename(path)

경로 중 디렉토리명과 파일명 나누어 얻기: os.path.split(path)

dir, file = os.path.split("/Users/evan/dev/python/web-crawler-py/parsed_data")print(dir, file, sep="\n")# /Users/evan/dev/python/web-crawler-py# parsed_data

파일 경로를 리스트로 얻기: 파일 경로를 os.path.sep(OS별 파일 경로 나는 문자)를 이용해 split

print("/Users/evan/dev/python/web-crawler-py/parsed_data".split(os.path.sep))# ['', 'Users', 'evan', 'dev', 'python', 'web-crawler-py', 'parsed_data']

경로를 병합하여 새 경로 생성: os.path.join(path, path1, path2, ...) 넘겨준 path들을 묶어 하나의 경로로 만듬.

print(os.path.join("/Users/evan/dev/python/web-crawler-py/parsed_data", "test"))# /Users/evan/dev/python/web-crawler-py/parsed_data/test

디렉토리 안의 파일/서브 디렉토리 리스트: os.listdir(path) path 하위에 있는 파일, 디렉토리 리스트를 보여줍니다.

print(os.listdir("/Users/evan/dev/python/web-crawler-py/parsed_data"))# ['migrations', 'models.py', '__init__.py', '__pycache__', 'apps.py', 'parser.py', 'admin.py', 'tests.py', 'views.py']

파일 혹은 디렉토리가 존재하는지 체크: os.path.exists(path)

print(os.path.exists("/Users/evan/dev/python/web-crawler-py/parsed_data"))# True​print(os.path.exists("/Users/evan/dev/python/web-crawler-py/parsed_data/admin.py"))# True

디렉토리가 존재하는지 체크: os.path.isdir(path)

print(os.path.isdir("/Users/evan/dev/python/web-crawler-py/parsed_data"))# True​print(os.path.isdir("/Users/evan/dev/python/web-crawler-py/parsed_data/admin.py"))# False

파일이 존재하는지 체크: os.path.isfile(path)

print(os.path.isfile("/Users/evan/dev/python/web-crawler-py/parsed_data"))# False​print(os.path.isfile("/Users/evan/dev/python/web-crawler-py/parsed_data/admin.py"))# True

 

파일의 크기: os.path.getsize(path)

print(os.path.getsize("/Users/evan/dev/python/web-crawler-py/parsed_data"))# 352

 

자 그럼 지금까지 배운것으로 다음 구문이 도대체 뭘 의미하는지 알아보겠습니다.

BASE_DIR = os.path.dirname(os.path.abspath(__file__))

 

import os​print(__file__)# /Users/evan/dev/python/web-crawler-py/parsed_data/parser.py​print(os.path.abspath(__file__))# Users/evan/dev/python/web-crawler-py/parsed_data/parser.py​print(os.path.dirname(os.path.abspath(__file__)))# /Users/evan/dev/python/web-crawler-py/parsed_data
 

1. __file__은 해당 파일이 모듈로서 로드되면 __file__이라는 이름으로 설정됩니다.

2. __file__을 절대 경로화 해줍니다. (맨 앞 /가 붙는 것 빼고는 차이점이 없습니다.)

3. 절대 경로에서 디렉터리 경로를 가져옵니다.

4. BASE_DIR이라는 변수에 저장에 사용합니다.



출처: https://itmining.tistory.com/122 [IT 마이닝]

728x90

+ Recent posts