파이썬 식별자는 변수, 함수, 클래스, 모듈 또는 다른 객체를 식별하는데 사용되는 이름을 뜻합니다. 식별자는 문자 A부터 Z 또는 a에서 z 또는 밑줄 (_)로 시작하며 한 개 또는 그 이상의 문자로 구성됩니다. 파이썬에서는 @, $, %와 같은 특수 문자를 식별자 내에서 사용할 수 없습니다. 파이썬은 대소 문자를 구별하는 프로그래밍 언어이기 때문에 Manpower와 manpower는 Python에서 두 개의 다른 식별자로 처리됩니다.
다음은 Python 식별자의 명명 규칙입니다. - 클래스 이름은 대문자로 시작합니다. 다른 모든 식별자는 소문자로 시작합니다. - 1개의 밑줄로 시작: 내부적으로 사용되는 변수입니다. - 1개의 밑줄로 종료: 파이썬 기본 키워드와 충돌을 피하려고 사용됩니다. - 2개의 밑줄로 시작: 클래스 속성으로 사용합니다. - 2개의 밑줄로 종료: 사용자가 조정할 수 있는 네임스페이스 안의 속성입니다. - 식별자는 숫자로 시작될 수 없다. 1variable은 오류이지만 variable1 은 괜찮다. - 키워드는 식별자로 사용할 수 없다. - !, @, #, $, % 등 특수 기호는 우리 식별자에서 사용할 수 없다. - 식별자의 길이는 제한이 없다.
python3에서는 유니코드 문자를 식별자로 사용할 수 있습니다. 즉, 한글로도 변수명을 지을 수 있지만 권장되지는 않는다고 합니다.
# https://docs.python.org/ko/3/library/calendar.html
import calendar
yy = 2023
mm = 5
#display the calendar
print(calendar.month(yy,mm))
#calendar 모듈 내용 확인
print(dir(calendar))
# 파이썬 컴파일 경로가 달라서 현재 폴더의 이미지를 호출하지 못할때 작업디렉토리를 변경한다.
importos
frompathlibimportPath
# src 상위 폴더를 실행폴더로 지정하려고 한다.
real_path=Path(__file__).parent.parent
print(real_path)
#작업 디렉토리 변경
os.chdir(real_path)
# 파이썬 컴파일 경로가 달라서 현재 폴더의 이미지를 호출하지 못할때 작업디렉토리를 변경한다.
import os
from pathlib import Path
# src 상위 폴더를 실행폴더로 지정하려고 한다.
real_path = Path(__file__).parent.parent
print(real_path)
#작업 디렉토리 변경
os.chdir(real_path)
처리내용
os 및 os.path
pathlib
현재의 디렉토리를 취득
os.getcwd()
Path.cwd()
맨 앞의 ~를 홈 디렉토리에 치환
os.path.expanduser()
Path.expanduser(), Path.home()
경로의 존재 확인
os.path.exists()
Path.exists()
디렉토리인가를 판단
os.path.isdir()
Path.is_dir()
파일인가를 판단
os.path.isfile()
Path.is_file()
심볼릭 링크인가를 판단
os.path.islink()
Path.is_symlink()
절대경로인가를 판단
os.path.isabs()
PurePath.is_absolute()
절대경로로 변환
os.path.abspath()
Path.resolve()
status를 취득
os.stat()
Path.stat(), Path.owner(), Path.group()
경로를 연결
os.path.join()
PurePath.joinpath()
파일명을 취득
os.path.basename()
PurePath.name
새로운 디렉토리를 취득
os.path.dirname()
PurePath.parent
확장자를 분할·취득
os.path.splitext()
PurePath.suffix
Pathlib - 객체 지향 파일 시스템 경로
객체 지향 파일 시스템 경로, 즉 파일을 객체로 관리하겠다는것 같음. 아래 그림은 Pathlib 내부 객체들의 상속관계로, 가장 기본적인 객체는PurePath임을 알 수있음. 대략적인 객체간 의미와 관계를 알기 위해 라이브러리를 뜯어봄 ->pathlib.py
차이점
os.path와Pathlib의 가장 큰 차이점은, 경로를 문자열로 다루냐, 객체로 다루냐 차이인데, 모든 것이 객체로 이루어진python인 만큼,Pathlib가 자연스러운 모듈이며 객체 내부적으로 정의된 연산자를 사용할 수 있어 경로에 있어 더 자연스러운 표현이 가능함.
기본적인 사용법은 알아야, 나중에 쓸 일이 있으면 찾아보지 않고 쓸 수 있으니 대충정리해보자.
1. 탐색
논리적 경로와, 절대 경로와의 구분을 잘 해야 함. 논리 경로 상에서, 앵커나 빈 경로는 넘어갈 수 없음. 코드상으로 경로 탐색에 사용할 수 있는 것은,.parent,.parents,.iterdir()등이 있음.
상위 디렉토리로 넘어가기 위해선,.parent를 사용하나, 사용하기 전 절대경로로 바꾸고, 현재 경로가 디렉토리이면,.iterdir()를 통해 자식 경로를 얻을 수 있음.
from pathlib import Path
p = Path('.') # PosixPath('.')
p.resolve() # os.path.abspath()
p.resolve().parent
list(p.iterdir()) # iteration, list 변환, = os.listdir()
2. 연산자
연산자를 사용하여 경로 조합 가능.
from pathlib import Path
p = Path.home() # os.path.expanduser()
p_sub = p / 'foo' / 'bar' # PosixPath('/Users/kyuu/foo/bar')
p_sub = Path(p, 'foo', 'bar') # os.path.join() 모방