os — 다양한 운영 체제 인터페이스

os — 다양한 운영 체제 인터페이스

소스 코드: Lib/os.py

이 모듈은 운영 체제에 의존하는 기능을 사용하기 위한 이식 가능한 방법을 제공해요. Windows와 macOS에서 다양한 파일·디렉터리 조작을 수행하는 함수는 os.stat()os.fstat()이 있다면 사용할 수 있고, 그렇지 않으면 하나를 제외한 모든 것을 지원하지 않아요.

이 모듈은 주로 os.path 모듈을 통해 사물을 조작하거나 운영 체제 인터페이스를 설명하는 데 사용돼요. os 모듈의 portable하거나 임의의 이름을 가진 것을 제외하고는 사용하지 말아야 해요.

출처: Python 표준 라이브러리

본문

상대 경로와 절대 경로, 그리고 이식 가능한 함수들

os 모듈의 파일·디렉터리 함수들은 상대 경로 또는 절대 경로를 인자로 받아요. 경로 인자는 str 또는 bytes 문자열이고, 경로 항상 os.PathLike 객체(즉, PATHPATHEXT라고도 하며 os.fspath() 함수로 변환될 수 있는 객체)이거나 정수 파일 디스크립터가 될 수 있어요.

대부분의 함수는 파일 디스크립터로 호출될 수 있고, 이것들은 파일의 read/write 연산에 대한 대체 이름으로 사용될 수 있어요.

파일 디스크립터 (File Descriptor Operations)

  • os.open(path, flags, mode=0o777, *, dir_fd=None) — 파일을 열어 파일 디스크립터를 돌려줘요.
  • os.close(fd) — 파일 디스크립터 fd를 닫아요.
  • os.read(fd, n) — 파일 디스크립터 fd에서 최대 n 바이트를 읽어요.
  • os.write(fd, str, /) — 파일 디스크립터 fd에 바이트 str을 써요.
  • os.lseek(fd, pos, whence, /) — 파일 디스크립터 fd의 현재 위치를 변경해요.
  • os.fstat(fd) — 파일 디스크립터 fd의 상태를 가져와요.
  • os.ftruncate(fd, length, /) — 파일 디스크립터 fd에 해당하는 파일을 length 바이트로 자른다.
  • os.fsync(fd) — 파일 디스크립터 fd의 모든 버퍼링된 데이터가 디스크에 기록되도록 해요.
  • os.fdatasync(fd) — 파일 데이터의 모든 버퍼링된 데이터가 디스크에 기록되도록 해요.
  • os.dup(fd, /) — 파일 디스크립터 fd의 복사본을 돌려줘요.
  • os.dup2(fd, fd2, inheritable=True) — 파일 디스크립터 fd의 복사본을 fd2로 돌려줘요.
  • os.pipe() — 파이프를 만들고 (read_fd, write_fd) 한 쌍의 파일 디스크립터를 돌려줘요.
  • os.fchmod(fd, mode)fd가 참조하는 파일의 모드를 변경해요.
  • os.fchown(fd, uid, gid)fd가 참조하는 파일의 소유자 및 그룹을 변경해요.
  • os.fpathconf(fd, name) — 열린 파일과 관련된 시스템 구성 정보를 돌려줘요.
  • os.posix_fadvise(fd, offset, len, advice) — 파일 접근 패턴에 대한 계획(advice)을 커널에 알려줘요.
  • os.posix_fallocate(fd, offset, len)fd가 참조하는 파일에 디스크 공간을 할당해요.
  • os.sendfile(out_fd, in_fd, offset, count) — 파일 디스크립터 in_fd에서 out_fd로 카운트 바이트를 복사해요.
  • os.P_WAIT, os.P_NOWAIT — 프로세스 대기 방식 상수.

파일 및 디렉터리 (Files and Directories)

아래 함수들은 모든 OS에서 사용할 수 있어요 (Unix와 Windows 둘 다). 상대 경로는 dir_fd가 주어지면 기준 디렉터리에 상대적이에요.

  • os.access(path, mode, *, dir_fd=None, effective_ids=False, follow_symlinks=True) — 접근 권한을 확인해요.
  • os.chdir(path) — 현재 작업 디렉터리를 변경해요.
  • os.fchdir(fd) — 현재 작업 디렉터리를 파일 디스크립터 fd가 참조하는 디렉터리로 변경해요.
  • os.getcwd() — 현재 작업 디렉터리를 나타내는 문자열을 돌려줘요.
  • os.getcwdb() — 현재 작업 디렉터리를 나타내는 바이트 문자열을 돌려줘요.
  • os.chmod(path, mode, *, dir_fd=None, follow_symlinks=True) — 경로의 모드를 변경해요.
  • os.chown(path, uid, gid, *, dir_fd=None, follow_symlinks=True) — 경로의 소유자 및 그룹을 변경해요.
  • os.stat(path, *, dir_fd=None, follow_symlinks=True) — 파일 상태를 가져와요.
  • os.lstat(path, *, dir_fd=None) — 심볼릭 링크 자체의 상태를 가져와요.
  • os.listdir(path='.') — 디렉터리의 항목 이름 목록을 돌려줘요.
  • os.scandir(path='.') — 디렉터리 항목을 산출하는 DirEntry 객체의 이터레이터를 돌려줘요.
  • os.walk(top, topdown=True, onerror=None, followlinks=False) — 디렉터리 트리를 걸어가며 파일 이름을 산출하는 생성기.
  • os.makedirs(name, mode=0o777, exist_ok=False) — 재귀 디렉터리 생성.
  • os.mkdir(path, mode=0o777, *, dir_fd=None) — 디렉터리 생성.
  • os.rmdir(path, *, dir_fd=None) — 디렉터리 제거.
  • os.removedirs(name) — 디렉터리를 재귀적으로 제거.
  • os.rename(src, dst, *, src_dir_fd=None, dst_dir_fd=None) — 파일 또는 디렉터리 이름 변경.
  • os.replace(src, dst, *, src_dir_fd=None, dst_dir_fd=None)dst가 있으면 교체하며 이름 변경.
  • os.remove(path, *, dir_fd=None) / os.unlink(path, *, dir_fd=None) — 파일 제거.
  • os.utime(path, times=None, *, ns=None, dir_fd=None, follow_symlinks=True) — 파일 접근·수정 시간 설정.
  • os.link(src, dst, *, src_dir_fd=None, dst_dir_fd=None, follow_symlinks=True) — 하드 링크 생성.
  • os.symlink(src, dst, target_is_directory=False, *, dir_fd=None) — 심볼릭 링크 생성.
  • os.path.exists(path) — 경로 존재 확인.
  • os.path.isfile(path) / os.path.isdir(path) — 파일/디렉터리 여부 확인.

프로세스 관리 (Process Management)

  • os.fork() — 자식 프로세스를 포크. Unix에서만.
  • os.execv(path, args) / os.execve(path, args, env) — 새 프로그램 실행.
  • os.spawnv(mode, path, args) / os.spawnve(mode, path, args, env) — 새 프로그램 스폰.
  • os.system(command) — 셸에서 명령 실행.
  • os.getpid() — 현재 프로세스 ID.
  • os.getppid() — 부모 프로세스 ID.
  • os.kill(pid, sig) — 프로세스에 시그널 전송.
  • os.wait() / os.waitpid(pid, options) — 자식 프로세스 종료 대기.
  • os.WEXITSTATUS(status), os.WIFEXITED(status), os.WIFSIGNALED(status) 등 — 종료 상태 해석.
  • os.getuid() / os.geteuid() — 사용자 ID.
  • os.getgid() / os.getegid() — 그룹 ID.
  • os.environ — 문자열 환경 사전.

운영 체제 관련 데이터

  • os.name — 파이썬이 사용 중인 운영 체제의 이름 (예: 'posix', 'nt').
  • os.sep — 경로 요소를 구분하는 문자.
  • os.altsep — 대체 경로 구분자.
  • os.extsep — 파일 이름과 확장자를 구분하는 문자.
  • os.pathsep — 일반적으로 경로 목록에서 경로 요소를 구분하는 문자.
  • os.curdir — 현재 디렉터리를 나타내는 문자열.
  • os.pardir — 부모 디렉터리를 나타내는 문자열.
  • os.linesep — 현재 플랫폼에서 줄을 구분하는 문자열.
  • os.devnull — null 장치의 경로.
  • os.defpathexec* 함수에서 PATH 환경 변수가 없을 때 사용되는 기본 검색 경로.
  • os.supports_dir_fd, os.supports_effective_ids, os.supports_fd, os.supports_follow_symlinks — 각 기능을 지원하는지 여부.

기타 기능

  • os.urandom(n) — 암호용으로 안전한 무작위 바이트 문자열을 돌려줘요.
  • os.getenv(key, default=None) — 환경 변수 값을 돌려줘요.
  • os.putenv(key, value) / os.unsetenv(key) — 환경 변수 설정/해제.
  • os.get_exec_path(env=None) — 실행 파일을 검색할 경로 목록.
  • os.pathsep — 경로 목록 구분자.
  • os.walk — 디렉터리 트리 탐색.
  • os.get_terminal_size(fd=STDOUT_FILENO) — 터미널 창 크기.
  • os.truncate(path, length) — 파일을 length 바이트로 자른다.
  • os.getrandom(size, flags) — 유효한 임의 바이트.
  • os.makedev(major, minor) / os.major(dev) / os.minor(dev) — 장치 번호 조작.

파이썬 기반 os.path

os.path 모듈은 posixpath(POSIX) 또는 ntpath(Windows)이며, 경로 조작 함수를 제공해요:

  • os.path.abspath(path) — 절대 경로.
  • os.path.basename(path) — 경로의 마지막 부분.
  • os.path.dirname(path) — 경로의 디렉터리 부분.
  • os.path.join(*paths) — 경로 결합.
  • os.path.split(path) — (head, tail) 튜플.
  • os.path.splitext(path) — (root, ext) 튜플.
  • os.path.expanduser(path)~ 확장.
  • os.path.expandvars(path) — 환경 변수 확장.
  • os.path.normpath(path) — 경로 정규화.
  • os.path.realpath(path) — 심볼릭 링크 해석.
  • os.path.relpath(path, start=os.curdir) — 상대 경로.
  • os.path.getsize(path), os.path.getmtime(path), os.path.getatime(path), os.path.getctime(path) — 파일 메타데이터.
  • os.path.isabs(path), os.path.ismount(path), os.path.islink(path) — 경로 검사.
  • os.path.samefile(path1, path2), os.path.sameopenfile(fp1, fp2), os.path.samestat(stat1, stat2) — 동일 파일 검사.
  • os.path.splitdrive(path), os.path.splitunc(path), os.path.commonpath(paths), os.path.commonprefix(list) — 경로 분해·공통화.
  • os.path.normcase(path), os.path.lexists(path), os.path.supports_unicode_filenames — 기타.

더 알아보기

  • os.path — 경로 조작.

  • shutil — 고급 파일 작업.

  • pathlib — 객체 지향 경로 API.

  • subprocess — 프로세스 생성·관리의 현대적 인터페이스.

  • os (원문)

  • os.path (원문)