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"))# Trueprint(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"))# Trueprint(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"))# Falseprint(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 osprint(__file__)# /Users/evan/dev/python/web-crawler-py/parsed_data/parser.pyprint(os.path.abspath(__file__))# Users/evan/dev/python/web-crawler-py/parsed_data/parser.pyprint(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