코딩하는 타코야끼

[Python] 9-1강_Path 본문

[T.I.L] : Today I Learned/Python

[Python] 9-1강_Path

가스오부시 2023. 4. 9. 02:56
728x90
반응형

1. Path (경로)

📍 경로(Path)

  • 프로그램에서 사용할 자원의 위치를 path/경로 라고 한다.
  • 파일 시스템에서는 파일이나 디렉토리가 있는 위치의 경로를 말한다.

📍 절대경로

  • 자원의 전체 경로를 표현하는 방식
  • 시작 경로부터 자원(파일, 디렉토리)이 있는 위치까지 표현한다.
    • 시작 경로: Root Path
      • windows: c :d :
      • Unix, Linux:   /   

📍 상대경로

  • 현재 작업 경로(위치)에서 부터 자원이 있는 위치까지 표현한다.
    • 시작 경로: 현재 작업경로

구문)

  •  . : 현재 디렉토리
  •  ..  : 상위 디렉토리
  •  /  : 경로 구분자, 상위경로/하위경로
./../main.py 
../main.py  # "./"인 현재 디렉토리는 생략 가능.

📍 운영체제(O/S)별 경로구분자

  • 윈도우즈:  \ (역슬래쉬)
  • 리눅스/유닉스:  (슬래쉬)

📍 os 메소드

🌓  os.getcwd( )

import os

# 현재 (working) 디렉토리 - 현재 main 모듈이 있는 경로.
os.getcwd()
>>>
/Users/Desktop/mose/python_basic/Anaconda/09입출력

🌓  os.chdir( )

# 현재 working directory 변경
os.chdir('/Users/Desktop/mose/python_basic')
print(os.getcwd())
>>>
/Users/Desktop/mose/python_basic

🌓 os.mkdir( ), os.makedirs( )

path = /Users/Desktop/mose/python_basic/test
# test 디렉토리를 생성
os.mkdir(path) 
# 폴더가 존재하지 않으면 생성하고, 존재하는 경우에는 아무것도 하지 않습니다.
os.makedirs(path, exist_ok = True) 

🌓 존재 여부

os.path.isdir('test1') # test1이 존재하고 디렉토리인지 여부
os.path.isfile('test1') #test1이 존재하고 파일인지 여부
os.path.exists('test1') #test1이 존재하는지 여부

🌓 os.rmdir( )

# rmdir(디렉토리) - 안에 파일이나 하위디렉토리가 있으면 Exception 발생.
os.rmdir('test1')

🌓 os.remove( )

# 파일 삭제
os.remove('test/a1.py')

🌓 os.listdir( )

# path 디렉토리 하위에 있는 디렉토리, 파일 이름을 리스트로 반환.
path = 'test'
os.listdir(path) 

🌓 os.path.join( )

sub_list = os.lsitdir(path) # 파일 이름들이 들어있는 리스트.
print(os.path.join('a', 'b', 'c', 'd', 'e'))
print(os.path.join(path, sub_list[0]))
>>>
a/b/c/d/e
test/.DS_Store

📍 glob 모듈

  • 디렉토리 안에 있는 파일/디렉토리들을 wild card 문자를 이용해서 다양하게 조회활 수 있다.

🌓 wild card

  • : 0글자 이상의 모든 문자열
    • ex) .jpg 확장자가 jpg인 모든 이름의 파일. a.png: 이름이 a로 시작하고 확장자가 png인 모든 파일
  • ? : 한글자.
    • ex) ab?de.jpg : 이름이 ab와 de사이에 아무글자나 한글자가 들어오는 jpg파일
    • : 모든 하위 디렉토리. 하위디렉토리의 하위 디렉토리 포함.
from glob import glob

glob('test/*') # test 디렉토리 안에만 있는 모든 파일
glob('test/*') # 하위 디렉토리 안에 있는 모든 파일
glob('test/*.py') # test 디렉토리 안에 확장자가 "py"인 모든 파일 (자주 사용함!!)
glob('test/?.py') # ? -> 한글자인데 아무거나


2. pathlib 모듈울 이용해 경로 처리

📍 경로 합치기

import pathlib import Path
# Path: attribute로 파일/디렉토리 경로를 가지며
# 그 경로관련 처리를 하는 다양한 메소드를 제공.

#test 디렉토리를 다루는 경로객체 생성
path = Path('test')

# 경로 합치기
path1 = path / "dir1" / "dir2" / "my_file.txt"
print(path1)
>>>
test/dir1/dir2/my_file.txt

📍 경로 메소드

# 각 경로 요소들을 나눠서 튜플로 반환.
path1.parts
>>>
('test', 'dir1', 'dir2', 'my_file.txt')
# 마지막 경로가 파일일때 확장자를 반환. 확장자가 없을 경우 None 반환.
path1.suffix
>>>
'.txt'
# 확장자를 뺀 파일명 또는 디렉토리 이름을 반환
path1.stem
'my_file'
반응형

'[T.I.L] : Today I Learned > Python' 카테고리의 다른 글

[Python] 10강_Iterable 과 Decorator  (0) 2023.04.09
[Python] 9-2강_입출력  (2) 2023.04.09
[Python] 8강_예외처리  (0) 2023.04.09
[Python] 7강_패키지 모듈 import  (0) 2023.04.05
[Python] 6강_객체지향 프로그  (0) 2023.04.05