os — 기타 운영 체제 인터페이스¶
소스 코드: Lib/os.py
이 모듈은 운영 체제 종속 기능을 사용하는 이식성 있는 방법을 제공합니다. 파일을 읽거나 쓰고 싶으면 open()을 보세요, 경로를 조작하려면 os.path 모듈을 보시고, 명령 줄에서 주어진 모든 파일의 모든 줄을 읽으려면 fileinput 모듈을 보십시오. 임시 파일과 디렉터리를 만들려면 tempfile 모듈을 보시고, 고수준의 파일과 디렉터리 처리는 shutil 모듈을 보십시오.
이러한 기능의 가용성에 대한 참고 사항:
내장된 모든 운영 체제 종속적인 파이썬 모듈의 설계는, 같은 기능을 사용할 수 있는 한, 같은 인터페이스를 사용합니다; 예를 들어, 함수
os.stat(path)는 path 에 대한 stat 정보를 같은 (POSIX 인터페이스에서 기원한) 형식으로 반환합니다.특정 운영 체제에 고유한 확장 기능도
os모듈을 통해 사용할 수 있지만, 이러한 기능을 사용하는 것은 당연히 이식성에 해가 될 수 있습니다.경로 또는 파일명을 받아들이는 모든 함수는 바이트열과 문자열 객체를 모두 허용하며, 경로나 파일명이 반환되면 같은 형의 객체를 반환합니다.
VxWorks 환경에서는 os.popen, os.fork, os.execv 및 os.spawn*p*를 지원하지 않습니다.
WebAssembly, Android 및 iOS 플랫폼에서는
os모듈의 상당 부분이 제공되지 않거나 다르게 동작합니다. 프로세스(예:fork(),execve()) 및 리소스(예:nice()) 관련 API는 사용할 수 없습니다.getuid()및getpid()등은 에뮬레이션되거나 스텁으로 제공됩니다. 또한 WebAssembly 플랫폼은 시그널(예:kill(),wait())을 지원하지 않습니다.
참고
이 모듈의 모든 함수는, 올바르지 않거나 액세스할 수 없는 파일명과 경로일 때, 또는 올바른 형의 인자이지만, 운영 체제에서 허용하지 않으면 OSError(또는 이것의 서브 클래스)를 발생시킵니다.
- os.name¶
임포트 된 운영 체제 종속 모듈의 이름. 다음과 같은 이름이 현재 등록되어있습니다:
'posix','nt','java'.더 보기
sys.platform은 더 세분화된 정보를 제공합니다.os.uname()은 시스템 종속적인 버전 정보를 제공합니다.platform모듈은 시스템의 아이덴티티에 대한 자세한 검사를 제공합니다.
파일명, 명령 줄 인자 및 환경 변수¶
In Python, file names, command line arguments, and environment variables are
represented using the string type. On some systems, decoding these strings to
and from bytes is necessary before passing them to the operating system. Python
uses the filesystem encoding and error handler to perform this
conversion (see sys.getfilesystemencoding()).
The filesystem encoding and error handler are configured at Python
startup by the PyConfig_Read() function: see
filesystem_encoding and
filesystem_errors members of PyConfig.
버전 3.1에서 변경: 일부 시스템에서는 파일 시스템 인코딩을 사용한 변환이 실패할 수 있습니다. 이 경우 파이썬은 surrogateescape 인코딩 에러 처리기 를 사용합니다. 이는 디코딩 시 해석 불가능한 바이트를 유니코드 문자 U+DC*xx*로 대체하고, 인코딩 시 다시 원래의 바이트로 변환함을 의미합니다.
파일 시스템 인코딩 은 128 미만의 모든 바이트를 성공적으로 디코딩해야 합니다. 파일 시스템 인코딩이 이 보증을 제공하지 못할 경우, API 함수는 UnicodeError 를 발생시킬 수 있습니다.
See also the locale encoding.
파이썬 UTF-8 모드¶
Added in version 3.7: 자세한 내용은 PEP 540 을 참조하십시오.
버전 3.15에서 변경: 파이썬 UTF-8 모드는 이제 기본적으로 활성화됩니다(PEP 686). 이 모드는 환경 변수 PYTHONUTF8=0 를 설정하거나 명령 줄 옵션 -X utf8=0 을 사용하여 비활성화할 수 있습니다.
The Python UTF-8 Mode ignores the locale encoding and forces the usage of the UTF-8 encoding:
파일 시스템 인코딩 으로 UTF-8을 사용합니다.
sys.getfilesystemencoding()은'utf-8'을 반환합니다.locale.getpreferredencoding()은'utf-8'을 반환합니다(do_setlocale 인자는 아무런 영향을 미치지 않습니다).sys.stdin,sys.stdout, 그리고sys.stderr는 모두 UTF-8을 텍스트 인코딩으로 사용합니다. 이때sys.stdin과sys.stdout은surrogateescape에러 처리기 를 활성화하며,sys.stderr는 기본 로케일 인식 모드와 동일하게backslashreplace를 계속 사용합니다.유닉스 환경에서
os.device_encoding()은 장치 인코딩 대신'utf-8'을 반환합니다.
UTF-8 모드에서도 표준 스트림 설정은 기본 로케일 인식 모드와 마찬가지로 환경 변수 PYTHONIOENCODING 에 의해 덮어씌워질 수 있습니다.
낮은 수준의 API 변경에 따라 다른 높은 수준의 API들도 다음과 같은 다른 기본 동작을 보입니다:
명령줄 인수, 환경 변수 및 파일 이름은 UTF-8 인코딩을 사용하여 텍스트로 디코딩됩니다.
os.fsdecode()와os.fsencode()는 UTF-8 인코딩을 사용합니다.open(),io.open(), 그리고codecs.open()은 기본적으로 UTF-8 인코딩을 사용합니다. 그러나, 이들은 기본적으로 여전히 strict 에러 처리기를 사용하여 바이너리 파일을 텍스트 모드로 열려고 할 때 무의미한 데이터가 생성되는 대신 예외를 발생시킬 가능성이 높습니다.
Python UTF-8 Mode 는 기본적으로 활성화되어 있습니다. 이 기능은 -X utf8=0 명령줄 옵션이나 PYTHONUTF8=0 환경 변수를 사용하여 비활성화할 수 있습니다. Python UTF-8 모드는 파이썬 시작 시에만 비활성화할 수 있으며, 그 값은 sys.flags.utf8_mode 에서 읽을 수 있습니다.
UTF-8 모드가 비활성화된 경우, 현재 로케일이 레거시 ASCII 기반 로케일( PYTHONCOERCECLOCALE 에서 설명한 바와 같음)로 식별되고 로케일 강제 변환이 비활성화되었거나 실패하지 않는 한, 인터프리터는 기본적으로 현재 로케일 설정을 사용합니다. 이러한 레거시 로케일의 경우, 명시적으로 지시하지 않는 한 인터프리터는 기본적으로 UTF-8 모드를 활성화합니다.
See also the UTF-8 mode on Windows and the filesystem encoding and error handler.
프로세스 매개 변수¶
이 함수들과 데이터 항목은 현재 프로세스와 사용자에 관한 정보와 관련 연산을 제공합니다.
- os.environ¶
키와 값이 프로세스 환경을 나타내는 문자열인 mapping 객체입니다. 예를 들어,
environ['HOME']은 홈 디렉터리의 경로명(일부 플랫폼)이며, 이는 C의getenv("HOME")과 동일합니다.이 매핑은
os모듈을 처음으로 가져올 때(일반적으로 파이썬 시작 시site.py를 처리하는 과정 중에) 캡처됩니다. 이 이후에 발생하는 환경 변화는os.environ을 직접 수정하여 발생한 변경 사항을 제외하고는os.environ에 반영되지 않습니다.이 매핑은 환경을 조회하는 것뿐 아니라 환경을 수정하는 데도 사용될 수 있습니다. 매핑이 수정될 때
putenv()가 자동으로 호출됩니다.유닉스에서, 키와 값은
sys.getfilesystemencoding()과'surrogateescape'에러 처리기를 사용합니다. 다른 인코딩을 사용하려면environb를 사용하십시오.Windows에서 키는 대문자로 변환됩니다. 이는 항목을 가져오고, 설정하거나 삭제할 때도 적용됩니다. 예를 들어,
environ['monty'] = 'python'은 키'MONTY'를 값'python'으로 매핑합니다.참고
putenv()을 직접 호출하는 것은os.environ을 변경하지 않으므로,os.environ을 수정하는 것이 더 좋습니다.참고
FreeBSD 및 macOS를 포함한 일부 플랫폼에서
environ을 설정하면 메모리 누수가 발생할 수 있습니다.putenv()에 대한 시스템 문서를 참조하십시오.이 매핑의 항목을 삭제하여 환경 변수를 해제할 수 있습니다.
os.environ에서 항목이 삭제되거나,pop()또는clear()메서드 중 하나가 호출될 때unsetenv()가 자동으로 호출됩니다.clearenv(3) 함수를 사용할 수 있는 경우,
clear()메서드는 해당 함수를 사용하며 단일os._clearenv감사 이벤트를 발생시킵니다. 그렇지 않은 경우에는 삭제되는 각 변수에 대해os.unsetenv이벤트를 발생시킵니다.key를 인자로 감사 이벤트(auditing event)os.unsetenv를 발생시킵니다.인수 없이
os._clearenv라는 감사 이벤트 를 발생시킵니다.더 보기
os.reload_environ()함수입니다.버전 3.9에서 변경: PEP 584의 병합(
|)과 업데이트(|=) 연산자를 지원하도록 갱신되었습니다.버전 3.15에서 변경:
clear()메서드가 이제os._clearenv감사 이벤트를 발생시킬 수 있습니다.
- os.environb¶
environ의 바이트 버전입니다: 키와 값이 모두 프로세스 환경을 나타내는bytes객체인 mapping 객체입니다.environ과environb는 동기화됩니다(즉,environb를 수정하면environ이 업데이트되고 그 반대도 마찬가지입니다).environb는supports_bytes_environ이True인 경우에만 사용할 수 있습니다.Added in version 3.2.
버전 3.9에서 변경: PEP 584의 병합(
|)과 업데이트(|=) 연산자를 지원하도록 갱신되었습니다.
- os.reload_environ()¶
The
os.environandos.environbmappings are a cache of environment variables at the time that Python started. As such, changes to the current process environment are not reflected if made outside Python, or byos.putenv()oros.unsetenv(). Useos.reload_environ()to updateos.environandos.environbwith any such changes to the current process environment.경고
이 함수는 스레드 안전(thread-safe)하지 않습니다. 다른 스레드에서 환경을 수정하는 동안 이 함수를 호출하는 것은 정의되지 않은 동작입니다. 로딩 중에
os.environ또는os.environb를 읽거나os.getenv()를 호출하면 빈 결과가 반환될 수 있습니다.Added in version 3.14.
- os.chdir(path)
- os.fchdir(fd)
- os.getcwd()
이 함수는 파일과 디렉터리에 설명되어 있습니다.
- os.fsencode(filename)¶
Encode path-like filename to the filesystem encoding and error handler; return
bytesunchanged.fsdecode()는 역 함수입니다.Added in version 3.2.
버전 3.6에서 변경:
os.PathLike인터페이스를 구현하는 객체를 받아들이도록 지원이 추가되었습니다.
- os.fsdecode(filename)¶
Decode the path-like filename from the filesystem encoding and error handler; return
strunchanged.fsencode()는 역 함수입니다.Added in version 3.2.
버전 3.6에서 변경:
os.PathLike인터페이스를 구현하는 객체를 받아들이도록 지원이 추가되었습니다.
- os.fspath(path)¶
경로의 파일 시스템 표현을 돌려줍니다.
str이나bytes가 전달되면, 변경되지 않은 상태로 반환됩니다. 그렇지 않으면__fspath__()가 호출되고, 해당 값이str이나bytes객체인 한 그 값이 반환됩니다. 다른 모든 경우에는TypeError가 발생합니다.Added in version 3.6.
- class os.PathLike¶
파일 시스템 경로를 나타내는 객체(예를 들어
pathlib.PurePath)의 추상 베이스 클래스입니다.Added in version 3.6.
- os.getenv(key, default=None)¶
환경 변수 key 가 존재하면 문자열로 그 값을 반환하고, 없으면 default 를 반환합니다. key 는 문자열입니다.
getenv()가os.environ을 사용하기 때문에,getenv()의 매핑 또한 임포트 시에 캡처되며 해당 함수는 향후 환경 변화를 반영하지 않을 수 있음에 유의하십시오.유닉스에서, 키와 값은
sys.getfilesystemencoding()과'surrogateescape'에러 처리기로 디코딩됩니다. 다른 인코딩을 사용하려면os.getenvb()를 사용하십시오.가용성: Unix, Windows.
- os.getenvb(key, default=None)¶
환경 변수 key 가 존재하면 바이트(bytes)로 그 값을 반환하고, 없으면 default 를 반환합니다. key 는 바이트여야 합니다.
getenvb()가os.environb를 사용하기 때문에,getenvb()의 매핑 또한 임포트 시에 캡처되며 해당 함수는 향후 환경 변화를 반영하지 않을 수 있음에 유의하십시오.getenvb()는supports_bytes_environ이True인 경우에만 사용할 수 있습니다.가용성: Unix.
Added in version 3.2.
- os.get_exec_path(env=None)¶
셸과 비슷하게, 프로세스를 시작할 때 지정된 이름의 실행 파일을 검색할 디렉터리 리스트를 반환합니다. (지정된다면) env 는 PATH를 조회할 환경 변수 딕셔너리 여야 합니다. 기본적으로, env 가
None이면,environ이 사용됩니다.Added in version 3.2.
- os.getegid()¶
현재 프로세스의 유효(effective) 그룹 ID를 반환합니다. 이것은 현재 프로세스에서 실행 중인 파일의 “set id” 비트에 해당합니다.
가용성: Unix, not WASI.
- os.getgid()¶
현재 프로세스의 실제(real) 그룹 ID를 반환합니다.
- os.getgrouplist(user, group, /)¶
user 가 속한 그룹 ID 목록을 반환합니다. group 이 목록에 없으면 추가됩니다. 일반적으로 group 은 파스워드 레코드에서 user 의 그룹 ID 필드로 지정되며, 그렇지 않으면 해당 그룹 ID가 누락될 수 있기 때문입니다.
가용성: Unix, not WASI.
Added in version 3.3.
- os.getgroups()¶
현재 프로세스와 관련된 보충(supplemental) 그룹 ID 목록을 반환합니다.
가용성: Unix, not WASI.
참고
macOS에서
getgroups()동작은 다른 Unix 플랫폼과 다소 차이가 있습니다. 파이썬 인터프리터가10.5이하의 배포 타겟으로 빌드된 경우,getgroups()는 현재 사용자 프로세스와 관련된 유효 그룹 ID 목록을 반환합니다. 이 목록은 시스템에서 정의한 수(일반적으로 16)로 제한되며, 적절한 권한이 있는 경우setgroups()호출에 의해 수정될 수 있습니다.10.5보다 높은 배포 타겟으로 빌드된 경우,getgroups()는 프로세스의 유효 사용자 ID와 연관된 사용자의 현재 그룹 액세스 목록을 반환합니다. 이 그룹 액세스 목록은 프로세스가 실행되는 동안 변경될 수 있으며,setgroups()호출의 영향을 받지 않고 길이가 16으로 제한되지 않습니다. 배포 타겟 값은sysconfig.get_config_var('MACOSX_DEPLOYMENT_TARGET')로 확인할 수 있습니다.
- os.getlogin()¶
프로세스의 제어 터미널에 로그인한 사용자의 이름을 반환합니다. 대부분 목적에서,
getpass.getuser()를 사용하는 것이 더 유용한데, 이 함수는 환경 변수LOGNAME이나USERNAME을 검사하여 사용자가 누구인지 알아내고, 현재 실제 사용자 ID의 로그인 이름을 얻기 위해pwd.getpwuid(os.getuid())[0]로 폴백 하기 때문입니다.가용성: Unix, Windows, not WASI.
- os.getpgid(pid)¶
프로세스 ID pid 를 갖는 프로세스의 프로세스 그룹 ID를 반환합니다. pid 가 0이면, 현재 프로세스의 프로세스 그룹 id가 반환됩니다.
가용성: Unix, not WASI.
- os.getppid()¶
부모의 프로세스 ID를 반환합니다. 부모 프로세스가 종료했으면, 유닉스에서 반환된 id는 init 프로세스 (1) 중 하나이며, 윈도우에서는 여전히 같은 id인데, 다른 프로세스에서 이미 재사용했을 수 있습니다.
가용성: Unix, Windows, not WASI.
버전 3.2에서 변경: 윈도우에 대한 지원이 추가되었습니다.
- os.getpriority(which, who)¶
프로그램 스케줄 우선순위를 얻습니다. which 값은
PRIO_PROCESS,PRIO_PGRP또는PRIO_USER중 하나이고, who는 which 에 상대적으로 해석됩니다 (PRIO_PROCESS면 프로세스 식별자,PRIO_PGRP면 프로세스 그룹 식별자,PRIO_USER면 사용자 ID). 0 값의 who는 (각각) 호출하는 프로세스, 호출하는 프로세스의 프로세스 그룹, 호출하는 프로세스의 실제 사용자 ID를 나타냅니다.가용성: Unix, not WASI.
Added in version 3.3.
- os.PRIO_PROCESS¶
- os.PRIO_PGRP¶
- os.PRIO_USER¶
getpriority()와setpriority()함수의 매개 변숫값가용성: Unix, not WASI.
Added in version 3.3.
- os.PRIO_DARWIN_THREAD¶
- os.PRIO_DARWIN_PROCESS¶
- os.PRIO_DARWIN_BG¶
- os.PRIO_DARWIN_NONUI¶
getpriority()와setpriority()함수의 매개 변숫값가용성: macOS
Added in version 3.12.
- os.getresuid()¶
현재 프로세스의 실제(real), 유효(effective) 및 저장된(saved) 사용자 ID를 나타내는 튜플 (ruid, euid, suid)를 반환합니다.
가용성: Unix, not WASI, not macOS, not iOS.
Added in version 3.2.
- os.getresgid()¶
현재 프로세스의 실제(real), 유효(effective) 및 저장된(saved) 그룹 ID를 나타내는 튜플 (rgid, egid, sgid)를 반환합니다.
가용성: Unix, not WASI, not macOS, not iOS.
Added in version 3.2.
- os.getuid()¶
현재 프로세스의 실제(real) 사용자 ID를 반환합니다.
- os.initgroups(username, gid, /)¶
지정된 사용자 이름이 구성원인 모든 그룹과 지정된 그룹 ID를 포함하여 그룹 액세스 목록을 초기화하기 위해 시스템
initgroups()를 호출합니다.가용성: Unix, not WASI, not Android.
Added in version 3.2.
- os.putenv(key, value, /)¶
key 라는 환경 변수를 문자열 value 로 설정합니다. 이러한 환경의 변화는
os.system(),popen()또는fork()및execv()로 시작된 자식 프로세스에 영향을 줍니다.os.environ항목에 대한 할당은 자동으로 대응하는putenv()호출로 변환됩니다. 그러나putenv()호출은os.environ을 업데이트하지 않으므로, 실제로는os.environ의 항목에 할당하는 것이 더 좋습니다. 이는 각각os.environ과os.environb를 구현에 사용하는getenv()및getenvb()에도 적용됩니다.os.reload_environ()함수도 참조하십시오.참고
FreeBSD 및 macOS를 포함한 일부 플랫폼에서
environ을 설정하면 메모리 누수가 발생할 수 있습니다.putenv()에 대한 시스템 문서를 참조하십시오.key,value를 인자로 감사 이벤트(auditing event)os.putenv를 발생시킵니다.버전 3.9에서 변경: 이 함수는 이제 항상 사용할 수 있습니다.
- os.setgroups(groups, /)¶
현재 프로세스와 연관된 보충(supplemental) 그룹 ID의 목록을 groups로 설정합니다. groups 는 시퀀스 여야 하며, 각 요소는 그룹을 식별하는 정수여야 합니다. 이 연산은 대개 슈퍼 유저만 사용할 수 있습니다.
가용성: Unix, not WASI.
참고
macOS에서는 groups 의 길이가 정의된 최대 효과 그룹 ID 개수(일반적으로 16개)를 초과할 수 없습니다. setgroups() 호출로 설정된 그룹 목록을 반환하지 않을 수 있는 경우는
getgroups()문서를 참조하세요.
- os.setns(fd, nstype=0)¶
현재 스레드를 리눅스 네임스페이스와 다시 연결합니다. 자세한 내용은 setns(2) 및 namespaces(7) 매뉴얼 페이지를 참조하십시오.
fd 가
/proc/pid/ns/링크를 가리키는 경우,setns()는 호출한 스레드를 해당 링크와 연관된 네임스페이스와 다시 연결하며, nstype 은 작업에 제약을 가하기 위해 CLONE_NEW* 상수 중 하나로 설정될 수 있습니다(0은 제한 없음을 의미함).리눅스 5.8부터 fd 는
pidfd_open()에서 얻은 PID 파일 기술자를 가리킬 수 있습니다. 이 경우,setns()는 호출한 스레드를 fd 에 의해 참조되는 스레드와 동일한 하나 이상의 네임스페이스로 다시 연결합니다. 이는 ;문자열;이 CLONE_NEW* 상수 중 하나 이상을 결합한 비트 마스크인 nstype 에 의해 부과된 제약 조건의 영향을 받습니다(예:setns(fd, os.CLONE_NEWUTS | os.CLONE_NEWPID)). 호출자의 지정되지 않은 네임스페이스 멤버십은 변경되지 않습니다.fd 는
fileno()메서드가 있는 모든 객체이거나 가공되지 않은 파일 기술자일 수 있습니다.이 예제는 스레드를
init프로세스의 네트워크 네임스페이스와 다시 연결합니다:fd = os.open("/proc/1/ns/net", os.O_RDONLY) os.setns(fd, os.CLONE_NEWNET) os.close(fd)
가용성: Linux >= 3.0 with glibc >= 2.14.
Added in version 3.12.
더 보기
unshare()함수입니다.
- os.setpgrp()¶
구현된 버전에 따라 시스템 호출인
setpgrp()또는setpgrp(0, 0)을 호출합니다. 의미에 대해서는 유닉스 매뉴얼을 참조하십시오.가용성: Unix, not WASI.
- os.setpgid(pid, pgrp, /)¶
시스템 호출인
setpgid()를 사용하여 ID가 pid 인 프로세스의 프로세스 그룹 ID를 ID가 pgrp 인 프로세스 그룹으로 설정합니다. 의미에 대해서는 유닉스 매뉴얼을 참조하십시오.가용성: Unix, not WASI.
- os.setpriority(which, who, priority)¶
프로그램 스케줄 우선순위를 설정합니다. which 값은
PRIO_PROCESS,PRIO_PGRP또는PRIO_USER중 하나이고, who는 which 에 상대적으로 해석됩니다 (PRIO_PROCESS면 프로세스 식별자,PRIO_PGRP면 프로세스 그룹 식별자,PRIO_USER면 사용자 ID). 0 값의 who는 (각각) 호출하는 프로세스, 호출하는 프로세스의 프로세스 그룹, 호출하는 프로세스의 실제 사용자 ID를 나타냅니다. priority 는 -20에서 19 사이의 값입니다. 기본 우선순위는 0입니다; 우선순위가 낮으면 더 유리하게 스케줄 됩니다.가용성: Unix, not WASI.
Added in version 3.3.
- os.setregid(rgid, egid, /)¶
현재 프로세스의 실제(real) 및 유효한(effective) 그룹 ID를 설정합니다.
가용성: Unix, not WASI, not Android.
- os.setresgid(rgid, egid, sgid, /)¶
현재 프로세스의 실제(real), 유효(effective) 및 저장된(saved) 그룹 ID를 설정합니다.
가용성: Unix, not WASI, not Android, not macOS, not iOS.
Added in version 3.2.
- os.setresuid(ruid, euid, suid, /)¶
현재 프로세스의 실제(real), 유효(effective) 및 저장된(saved) 사용자 ID를 설정합니다.
가용성: Unix, not WASI, not Android, not macOS, not iOS.
Added in version 3.2.
- os.setreuid(ruid, euid, /)¶
현재 프로세스의 실제(real) 및 유효(effective) 사용자 ID를 설정합니다.
가용성: Unix, not WASI, not Android.
- os.strerror(code, /)¶
code 의 오류 코드에 해당하는 에러 메시지를 반환합니다. 알 수 없는 오류 번호가 주어졌을 때
strerror()가NULL을 반환하는 플랫폼에서는ValueError가 발생합니다.
- os.supports_bytes_environ¶
환경의 원시 OS 형이 바이트열이면
True(예를 들어, 윈도우에서는False).Added in version 3.2.
- os.umask(mask, /)¶
현재 숫자 umask를 설정하고 이전 umask를 반환합니다.
이 함수는 WASI에서 스텁(stub)입니다. 자세한 내용은 웹어셈블리 플랫폼 를 참조하십시오.
- os.uname()¶
현재 운영 체제를 식별하는 정보를 반환합니다. 반환 값은
uname_result입니다.macOS, iOS 및 Android에서 이 함수는 커널 이름과 버전을 반환합니다(즉, macOS와 iOS에서는
'Darwin', Android에서는'Linux'). iOS 및 Android에서 사용자용 운영 체제 이름과 버전을 얻으려면platform.uname()을 사용할 수 있습니다.가용성: Unix.
버전 3.3에서 변경: 반환형이 튜플에서 이름이 지정된 어트리뷰트를 가진 튜플류 객체로 변경되었습니다.
- class os.uname_result¶
os.uname()이 반환하는 시스템의 이름과 정보입니다. 이 속성들은 uname(2) 에 설명된 멤버들과 대응됩니다.하위 호환성을 위해, 이 객체는 또한 이터러블이며, ;속성;들이 그 순서대로 포함된 5-튜플처럼 작동합니다:
sysname,nodename,release,version, 그리고machine.- sysname¶
운영 체제 이름.
- nodename¶
네트워크상의 머신 이름. 일부 시스템에서는
nodename을 8자 또는 선행 구성 요소로 자릅니다. 호스트 이름을 가져오는 더 나은 방법은socket.gethostname()또는socket.gethostbyaddr(socket.gethostname())입니다.
- release¶
운영 체제 릴리스.
- version¶
운영 체제 버전.
- machine¶
하드웨어 식별자.
- os.unsetenv(key, /)¶
key 라는 이름의 환경 변수를 삭제합니다. 이러한 환경 변화는
os.system(),popen()또는fork()및execv()로 시작된 자식 프로세스에 영향을 줍니다.os.environ의 항목 삭제는 자동으로 대응하는unsetenv()호출로 변환되지만,unsetenv()호출은os.environ을 업데이트하지 않으므로 실제로는os.environ에서 항목을 직접 삭제하는 것이 권장됩니다.os.reload_environ()함수도 참조하십시오.key를 인자로 감사 이벤트(auditing event)os.unsetenv를 발생시킵니다.버전 3.9에서 변경: 이 함수는 이제 항상 사용할 수 있고 윈도우에서도 사용할 수 있습니다.
프로세스 실행 컨텍스트의 일부를 분리하여 새로 생성된 네임스페이스로 이동합니다. 자세한 내용은 unshare(2) 매뉴얼 페이지를 참조하십시오. flags 인자는 비트 마스크이며, 기존 연결에서 분리되어 새 네임스페이스로 이동할 실행 컨텍스트의 부분을 지정하는 하나 이상의 CLONE_* 상수 를 결합합니다. flags 인자가
0인 경우 호출 프로세스의 실행 컨텍스트에 아무런 변경도 가해지지 않습니다.가용성: Linux >= 2.6.16.
Added in version 3.12.
더 보기
setns()함수.
파일 객체 생성¶
이 함수들은 새로운 파일 객체를 만듭니다. (파일 기술자를 여는 것에 관해서는 open()를 참조하십시오.)
파일 기술자 연산¶
이 함수들은 파일 기술자를 사용하여 참조된 I/O 스트림에 작용합니다.
파일 기술자는 현재 프로세스에 의해 열린 파일에 대응하는 작은 정수입니다. 예를 들어, 표준 입력은 보통 파일 기술자 0이고, 표준 출력은 1이며, 표준 에러는 2입니다. 프로세스에 의해 열린 추가 파일은 3, 4, 5 등으로 지정됩니다. “파일 기술자”라는 이름은 약간 기만적입니다; 유닉스 플랫폼에서, 소켓과 파이프도 파일 기술자에 의해 참조됩니다.
fileno() 메서드는 필요할 때 파일 객체와 연관된 파일 기술자를 얻는 데 사용될 수 있습니다. 파일 기술자를 직접 사용하면 파일 객체 메서드를 거치지 않아서, 데이터의 내부 버퍼링과 같은 측면을 무시하게 되는 것에 유의하십시오.
- os.close(fd)¶
파일 기술자 fd를 닫습니다.
- os.closerange(fd_low, fd_high, /)¶
에러는 무시하면서, fd_low(포함)부터 fd_high(제외)까지 모든 파일 기술자를 닫습니다. 다음과 동등합니다 (하지만 훨씬 빠릅니다):
for fd in range(fd_low, fd_high): try: os.close(fd) except OSError: pass
- os.copy_file_range(src, dst, count, offset_src=None, offset_dst=None)¶
파일 기술자 src 의 오프셋 offset_src 부터 시작하여 count 바이트를 파일 기술자 dst 의 오프셋 offset_dst 로 복사합니다. offset_src 가
None인 경우 src 는 현재 위치에서 읽히며, offset_dst 도 마찬가지입니다.5.3 이전 버전의 리눅스 커널에서 src 및 dst 가 가리키는 파일은 동일한 파일 시스템에 있어야 하며, 그렇지 않으면
errno가errno.EXDEV로 설정된OSError가 발생합니다.이 복사는 커널에서 사용자 공간으로 데이터를 전송한 후 다시 커널로 가져오는 추가 비용 없이 수행됩니다. 또한, 일부 파일 시스템은 reflinks(예: 동일한 copy-on-write 디스크 블록에 대한 포인터를 공유하는 둘 이상의 inode; btrfs 및 XFS 지원)나 서버 측 복사(NFS의 경우)와 같은 추가 최적화를 구현할 수 있습니다.
이 함수는 두 파일 기술자 사이의 바이트를 복사합니다. 인코딩이나 줄바꿈과 같은 텍스트 옵션은 무시됩니다.
반환 값은 복사된 바이트의 양입니다. 이것은 요구된 양보다 적을 수 있습니다.
참고
리눅스에서
os.copy_file_range()는 procfs 및 sysfs와 같은 특수 파일 시스템의 의사(pseudo) 파일 범위를 복사하는 데 사용해서는 안 됩니다. 알려진 리눅스 커널 문제로 인해 항상 0바이트를 복사하고 파일이 비어 있는 것처럼 0을 반환합니다.가용성: Linux >= 4.5 with glibc >= 2.27.
Added in version 3.8.
- os.device_encoding(fd)¶
fd 와 연관된 장치가 터미널에 연결되어 있을 때 인코딩을 설명하는 문자열을 반환합니다; 그렇지 않으면
None을 반환합니다.유닉스에서 파이썬 UTF-8 모드 가 활성화된 경우 장치 인코딩 대신
'UTF-8'을 반환합니다.버전 3.10에서 변경: 유닉스에서 이 함수는 이제 파이썬 UTF-8 모드를 구현합니다.
- os.dup(fd, /)¶
파일 기술자 fd 의 복사본을 반환합니다. 새 파일 기술자는 상속 불가능합니다.
윈도우에서는, 표준 스트림(0: stdin, 1: stdout, 2: stderr)을 복제할 때, 새 파일 기술자가 상속 가능합니다.
가용성: not WASI.
버전 3.4에서 변경: 새로운 파일 기술자는 이제 상속 불가능합니다.
- os.dup2(fd, fd2, inheritable=True)¶
파일 기술자 fd 를 fd2에 복제하고, 필요하면 먼저 후자를 닫습니다. fd2를 반환합니다. 새로운 파일 기술자는 기본적으로 상속 가능하고, inheritable 이
False면 상속 불가능합니다.가용성: not WASI.
버전 3.4에서 변경: 선택적 inheritable 매개 변수를 추가했습니다.
버전 3.7에서 변경: 성공하면 fd2 를 반환합니다. 이전에는 항상
None을 반환했습니다.
- os.fchmod(fd, mode)¶
fd 에 의해 주어진 파일의 모드를 숫자 mode 로 변경합니다. mode의 가능한 값은
chmod()문서를 참조하십시오. 파이썬 3.3부터는,os.chmod(fd, mode)와 같습니다.path,mode,dir_fd를 인자로 감사 이벤트(auditing event)os.chmod를 발생시킵니다.버전 3.13에서 변경: 윈도우 지원이 추가되었습니다.
- os.fchown(fd, uid, gid)¶
fd 에 의해 주어진 파일의 소유자와 그룹 id를 숫자 uid 와 gid로 변경합니다. ID 중 하나를 변경하지 않으려면, 그것을 -1로 설정하십시오.
chown()를 참조하십시오. 파이썬 3.3부터는,os.chown(fd, uid, gid)와 같습니다.path,uid,gid,dir_fd를 인자로 감사 이벤트(auditing event)os.chown을 발생시킵니다.
- os.fdatasync(fd)¶
파일 기술자 fd 로 주어진 파일을 디스크에 쓰도록 강제합니다. 메타 데이터를 갱신하도록 강제하지 않습니다.
가용성: Unix, not macOS, not iOS.
- os.fpathconf(fd, name, /)¶
열린 파일과 관련된 시스템 구성 정보를 반환합니다. name 은 조회할 구성 값을 지정합니다; 정의된 시스템 값의 이름인 문자열일 수 있습니다; 이 이름은 여러 표준(POSIX.1, 유닉스 95, 유닉스 98 및 기타)에서 지정됩니다. 일부 플랫폼은 추가 이름도 정의합니다. 호스트 운영 체제에 알려진 이름은
pathconf_names딕셔너리에서 제공됩니다. 이 매핑에 포함되지 않은 구성 변수의 경우, name에 정수를 전달하는 것도 허용됩니다.name 이 문자열이고 알 수 없으면,
ValueError가 발생합니다. name에 대한 특정 값이 호스트 시스템에서 지원되지 않으면,pathconf_names에 포함되어 있어도, 에러 번호가errno.EINVAL인OSError가 발생합니다.파이썬 3.3부터,
os.pathconf(fd, name)과 같습니다.가용성: Unix.
- os.fstat(fd)¶
파일 기술자 fd 의 상태를 가져옵니다.
stat_result객체를 반환합니다.파이썬 3.3부터는,
os.stat(fd)와 같습니다.더 보기
stat()함수.
- os.fstatvfs(fd, /)¶
statvfs()와 같이 파일 기술자 fd 와 연관된 파일을 포함하는 파일 시스템에 대한 정보를statvfs_result로 반환합니다. 파이썬 3.3부터는 이는os.statvfs(fd)와 동일합니다.가용성: Unix.
- os.fsync(fd)¶
파일 기술자 fd 를 가진 파일을 디스크에 쓰도록 강제합니다. 유닉스에서는 네이티브
fsync()함수를 호출하고, 윈도우에서는 MS_commit()함수를 호출합니다.버퍼링 된 파이썬 파일 객체 f로 시작하는 경우, f 와 연관된 모든 내부 버퍼가 디스크에 기록되게 하려면, 먼저
f.flush()를 수행한 다음os.fsync(f.fileno())를 하십시오.가용성: Unix, Windows.
- os.ftruncate(fd, length, /)¶
파일 기술자 fd에 해당하는 파일을 잘라내어 최대 length 바이트가 되도록 만듭니다. 파이썬 3.3부터는,
os.truncate(fd, length)와 같습니다.fd,length를 인자로 감사 이벤트(auditing event)os.truncate를 발생시킵니다.가용성: Unix, Windows.
버전 3.5에서 변경: 윈도우 지원 추가
- os.get_blocking(fd, /)¶
파일 기술자의 블로킹 모드를 얻어옵니다:
O_NONBLOCK플래그가 설정되었으면False, 플래그가 지워졌으면True.set_blocking()및socket.socket.setblocking()도 참조하십시오.Added in version 3.5.
버전 3.12에서 변경: 윈도우에서 파이프 지원이 추가되었습니다.
- os.grantpt(fd, /)¶
파일 기술자 fd 가 가리키는 마스터 의사 터미널 장치와 연관된 슬레이브 의사 터미널 장치에 대한 액세스 권한을 부여합니다. 실패 시 파일 기술자 fd 는 닫히지 않습니다.
C 표준 라이브러리 함수
grantpt()를 호출합니다.가용성: Unix, not WASI.
Added in version 3.13.
- os.isatty(fd, /)¶
파일 기술자 fd 가 열려 있고 tty(류의) 장치에 연결되어 있으면
True를 반환하고, 그렇지 않으면False를 반환합니다.
- os.lockf(fd, cmd, len, /)¶
열린 파일 기술자에 POSIX 록을 적용, 검사 또는 제거합니다. fd 는 열린 파일 기술자입니다. cmd 는 사용할 명령을 지정합니다 -
F_LOCK,F_TLOCK,F_ULOCK또는F_TEST중 하나. len 은 잠글 파일의 영역을 지정합니다.fd,cmd,len을 인자로 감사 이벤트(auditing event)os.lockf를 발생시킵니다.가용성: Unix.
Added in version 3.3.
- os.F_LOCK¶
- os.F_TLOCK¶
- os.F_ULOCK¶
- os.F_TEST¶
lockf()가 취할 조치를 지정하는 플래그.가용성: Unix.
Added in version 3.3.
- os.login_tty(fd, /)¶
fd가 파일 기술자인 tty를 새로운 로그인 세션을 위해 준비합니다. 호출 프로세스를 세션 리더로 만들고, 해당 tty를 제어용 tty, 표준 입력(stdin), 표준 출력(stdout) 및 표준 에러(stderr)로 설정한 다음 fd를 닫습니다.
가용성: Unix, not WASI.
Added in version 3.11.
- os.lseek(fd, pos, whence, /)¶
파일 기술자 fd 의 현재 위치를 whence 에 의해 수정된 위치 pos 로 설정하고, 파일 시작을 기준으로 한 바이트 단위의 새로운 위치를 반환합니다. whence 의 유효한 값은 다음과 같습니다:
SEEK_SET또는0– 파일 시작을 기준으로 pos 설정SEEK_CUR또는1– 현재 파일 위치를 기준으로 pos 설정SEEK_END또는2– 파일 끝을 기준으로 pos 설정SEEK_HOLE– pos*를 기준으로 다음 데이터 위치로 *pos 설정SEEK_DATA– pos*를 기준으로 다음 데이터 홀(hole)로 *pos 설정
버전 3.3에서 변경:
SEEK_HOLE및SEEK_DATA지원을 추가했습니다.
- os.SEEK_SET¶
- os.SEEK_CUR¶
- os.SEEK_END¶
파일 위치 표시자를 조정하기 위한 whence 를 결정하는
lseek()함수 및 파일 객체 의seek()메서드용 매개변수입니다.SEEK_SET파일 시작을 기준으로 파일 위치를 조정합니다.
SEEK_CUR현재 파일 위치를 기준으로 파일 위치를 조정합니다.
SEEK_END파일 끝을 기준으로 파일 위치를 조정합니다.
이들의 값은 각각 0, 1, 2입니다.
- os.SEEK_HOLE¶
- os.SEEK_DATA¶
희소 할당된 파일의 데이터 및 홀을 검색하기 위한
lseek()함수 및 파일 객체 의seek()메서드용 매개변수입니다.SEEK_DATA탐색 위치를 기준으로 데이터가 포함된 다음 위치로 파일 오프셋을 조정합니다.
SEEK_HOLE탐색 위치를 기준으로 홀(hole)이 포함된 다음 위치로 파일 오프셋을 조정합니다. 홀은 0의 시퀀스로 정의됩니다.
참고
이 연산들은 이를 지원하는 파일 시스템에서만 유효합니다.
가용성: Linux >= 3.1, macOS, Unix
Added in version 3.3.
- os.open(path, flags, mode=0o777, *, dir_fd=None)¶
파일 path를 열고 flags 에 따른 다양한 플래그와 때로 mode 따른 모드를 설정합니다. mode를 계산할 때, 현재 umask 값으로 먼저 마스킹합니다. 새롭게 열린 파일의 파일 기술자를 돌려줍니다. 새 파일 기술자는 상속 불가능합니다.
플래그 및 모드 값에 대한 설명은 C 런타임 문서를 참조하십시오. 플래그 상수(
O_RDONLY,O_WRONLY등)는os모듈에 정의되어 있습니다. 특히 윈도우에서 바이너리 모드로 파일을 열려면O_BINARY가 필요합니다.이 함수는 dir_fd 매개 변수로 디렉터리 기술자에 상대적인 경로를 지원할 수 있습니다.
path,mode,flags를 인자로 감사 이벤트(auditing event)open을 발생시킵니다.버전 3.4에서 변경: 새로운 파일 기술자는 이제 상속 불가능합니다.
참고
This function is intended for low-level I/O. For normal usage, use the built-in function
open(), which returns a file object withread()andwrite()methods. To wrap a file descriptor in a file object, usefdopen().버전 3.3에서 변경: dir_fd 매개 변수가 추가되었습니다.
버전 3.5에서 변경: 시스템 호출이 인터럽트 되고 시그널 처리기가 예외를 발생시키지 않으면, 함수는 이제
InterruptedError예외를 일으키는 대신 시스템 호출을 재시도합니다 (이유는 PEP 475를 참조하세요).버전 3.6에서 변경: 경로류 객체를 받아들입니다.
다음 상수는 open() 함수에 대한 flags 매개 변수의 옵션입니다. 비트별 OR 연산자 |를 사용하여 결합할 수 있습니다. 일부는 모든 플랫폼에서 사용할 수는 없습니다. 가용성과 사용에 대한 설명은 유닉스의 open(2) 매뉴얼 페이지 또는 윈도우의 MSDN을 참조하십시오.
- os.O_RDONLY¶
- os.O_WRONLY¶
- os.O_RDWR¶
- os.O_APPEND¶
- os.O_CREAT¶
- os.O_EXCL¶
- os.O_TRUNC¶
위의 상수는 유닉스 및 윈도우에서 사용할 수 있습니다.
- os.O_DSYNC¶
- os.O_RSYNC¶
- os.O_SYNC¶
- os.O_NDELAY¶
- os.O_NONBLOCK¶
- os.O_NOCTTY¶
- os.O_CLOEXEC¶
위의 상수는 유닉스에서만 사용할 수 있습니다.
버전 3.3에서 변경:
O_CLOEXEC상수를 추가합니다.
- os.O_BINARY¶
- os.O_NOINHERIT¶
- os.O_SHORT_LIVED¶
- os.O_TEMPORARY¶
- os.O_RANDOM¶
- os.O_SEQUENTIAL¶
- os.O_TEXT¶
위의 상수는 윈도우에서만 사용할 수 있습니다.
- os.O_EVTONLY¶
- os.O_FSYNC¶
- os.O_SYMLINK¶
- os.O_NOFOLLOW_ANY¶
위의 상수들은 macOS에서만 사용할 수 있습니다.
버전 3.10에서 변경:
O_EVTONLY,O_FSYNC,O_SYMLINK,O_NOFOLLOW_ANY상수를 추가합니다.
- os.O_ASYNC¶
- os.O_DIRECT¶
- os.O_DIRECTORY¶
- os.O_NOFOLLOW¶
- os.O_NOATIME¶
- os.O_PATH¶
- os.O_TMPFILE¶
- os.O_SHLOCK¶
- os.O_EXLOCK¶
위의 상수는 확장이며 C 라이브러리에서 정의하지 않으면 존재하지 않습니다.
- os.openpty()¶
새로운 의사 터미널 쌍을 엽니다. 파일 기술자의 쌍
(master, slave)를 반환하는데, 각각 pty와 tty 입니다. 새 파일 기술자는 상속 불가능합니다. (약간) 더 이식성 있는 접근 방식을 사용하려면,pty모듈을 사용하십시오.가용성: Unix, not WASI.
버전 3.4에서 변경: 새로운 파일 기술자는 이제 상속 불가능합니다.
- os.pipe()¶
파이프를 만듭니다. 파일 기술자 쌍
(r, w)를 반환하는데, 각각 읽기와 쓰기에 사용할 수 있습니다. 새 파일 기술자는 상속 불가능합니다.가용성: Unix, Windows.
버전 3.4에서 변경: 새로운 파일 기술자는 이제 상속 불가능합니다.
- os.pipe2(flags, /)¶
flags 가 원자적으로 설정된 파이프를 만듭니다. flags 는 다음과 같은 값들을 하나 이상 OR 해서 만들 수 있습니다:
O_NONBLOCK,O_CLOEXEC. 파일 기술자 쌍(r, w)를 반환하는데, 각각 읽기와 쓰기에 사용할 수 있습니다.가용성: Unix, not WASI, not macOS, not iOS.
Added in version 3.3.
- os.posix_fallocate(fd, offset, len, /)¶
fd로 지정된 파일이 offset 에서 시작하여 len 바이트 동안 계속되도록 충분한 디스크 공간을 할당합니다.
가용성: Unix, not macOS, not iOS.
Added in version 3.3.
- os.posix_fadvise(fd, offset, len, advice, /)¶
특정 패턴으로 데이터에 액세스하려는 의도를 알려 커널이 최적화할 수 있도록 합니다. 조언(advice)은 fd에 의해 지정된 파일의 offset 에서 시작하여 len 바이트 동안 계속되는 영역에 적용됩니다. advice는
POSIX_FADV_NORMAL,POSIX_FADV_SEQUENTIAL,POSIX_FADV_RANDOM,POSIX_FADV_NOREUSE,POSIX_FADV_WILLNEED또는POSIX_FADV_DONTNEED중 하나입니다.가용성: Unix, not macOS, not iOS.
Added in version 3.3.
- os.POSIX_FADV_NORMAL¶
- os.POSIX_FADV_SEQUENTIAL¶
- os.POSIX_FADV_RANDOM¶
- os.POSIX_FADV_NOREUSE¶
- os.POSIX_FADV_WILLNEED¶
- os.POSIX_FADV_DONTNEED¶
사용 가능성이 큰 액세스 패턴을 지정하는
posix_fadvise()의 advice 에 사용될 수 있는 플래그.가용성: Unix.
Added in version 3.3.
- os.pread(fd, n, offset, /)¶
파일 기술자 fd에서 offset 의 위치부터 최대 n 바이트를 읽어 들이고, 파일 오프셋은 변경되지 않은 채로 남겨 둡니다.
읽어 들인 바이트를 포함하는 바이트열을 돌려줍니다. fd 에 의해 참조된 파일의 끝에 도달하면, 빈 바이트열 객체가 반환됩니다.
가용성: Unix.
Added in version 3.3.
- os.posix_openpt(oflag, /)¶
마스터 의사 터미널 장치에 대한 파일 기술자를 열고 반환합니다.
C 표준 라이브러리 함수
posix_openpt()를 호출합니다. oflag 인자는 시스템의posix_openpt()매뉴얼 페이지에 명시된 대로 파일 상태 플래그 및 파일 접근 모드를 설정하는 데 사용됩니다.반환된 파일 기술자는 상속 불가능 입니다. 시스템에서
O_CLOEXEC를 지원하는 경우 oflag 에 추가됩니다.가용성: Unix, not WASI.
Added in version 3.13.
- os.preadv(fd, buffers, offset, flags=0, /)¶
파일 기술자 fd에서 offset 위치부터 가변 바이트열류 객체들 buffers 로 읽어 들이고, 파일 오프셋은 변경되지 않은 채로 남겨 둡니다. 데이터가 가득 찰 때까지 각 버퍼로 데이터를 전송한 다음 나머지 데이터를 보관하기 위해 시퀀스의 다음 버퍼로 이동합니다.
flags 인자는 다음 플래그 중 0개 이상의 비트별 OR를 포함합니다:
실제로 읽힌 총 바이트 수를 반환합니다. 이 값은 모든 객체의 총 용량보다 작을 수 있습니다.
운영 체제는 사용할 수 있는 버퍼 수에 한계(
sysconf()값'SC_IOV_MAX')를 설정할 수 있습니다.os.readv()와os.pread()의 기능을 결합합니다.가용성: Linux >= 2.6.30, FreeBSD >= 6.0, OpenBSD >= 2.7, AIX >= 7.1.
플래그를 사용하려면 리눅스 4.6 이상이 필요합니다.
Added in version 3.7.
- os.RWF_NOWAIT¶
즉시 사용할 수 없는 데이터를 기다리지 않습니다. 이 플래그를 지정하면, 하부 저장 장치에서 데이터를 읽어야 하거나 록을 기다려야 할 때 즉시 시스템 호출이 반환됩니다.
데이터가 성공적으로 읽히면 읽은 바이트 수를 반환하고, 아무것도 읽히지 않으면
-1을 반환하며 errno를errno.EAGAIN으로 설정합니다.가용성: Linux >= 4.14.
Added in version 3.7.
- os.RWF_HIPRI¶
우선순위가 높은 읽기/쓰기. 블록 기반 파일 시스템이 장치의 폴링을 사용할 수 있게 하여, 지연은 짧아 지지만, 추가 자원을 사용할 수 있습니다.
현재, 리눅스에서, 이 기능은
O_DIRECT플래그를 사용하여 열린 파일 기술자에만 사용할 수 있습니다.가용성: Linux >= 4.6.
Added in version 3.7.
- os.RWF_ATOMIC¶
데이터를 원자적으로 기록합니다. 장치의 원자적 쓰기 단위에 맞춘 정렬이 필요합니다.
가용성: Linux >= 6.11
Added in version 3.15.
- os.ptsname(fd, /)¶
파일 기술자 fd 가 가리키는 마스터 의사 터미널 장치와 연관된 슬레이브 의사 터미널 장치의 이름을 반환합니다. 실패 시 파일 기술자 fd 는 닫히지 않습니다.
사용 가능한 경우 재진입 가능한 C 표준 라이브러리 함수
ptsname_r()을 호출하며, 그렇지 않은 경우 스레드 안전이 보장되지 않는 C 표준 라이브러리 함수ptsname()을 호출합니다.가용성: Unix, not WASI.
Added in version 3.13.
- os.pwrite(fd, str, offset, /)¶
파일 기술자 fd의 offset 위치에 str 바이트열을 쓰고, 파일 오프셋은 변경되지 않은 채로 남겨 둡니다.
실제로 쓴 바이트 수를 반환합니다.
가용성: Unix.
Added in version 3.3.
- os.pwritev(fd, buffers, offset, flags=0, /)¶
buffers 의 내용을 파일 오프셋을 변경하지 않고 offset 위치에 파일 기술자 fd 에 씁니다. buffers 는 바이트열류 객체 의 시퀀스여야 합니다. 버퍼는 배열 순서로 처리되며, 두 번째 버퍼로 넘어가기 전에 첫 번째 버퍼의 모든 내용을 먼저 작성합니다.
flags 인자는 다음 플래그 중 0개 이상의 비트별 OR를 포함합니다:
실제로 쓴 총 바이트 수를 반환합니다.
운영 체제는 사용할 수 있는 버퍼 수에 한계(
sysconf()값'SC_IOV_MAX')를 설정할 수 있습니다.os.writev()와os.pwrite()의 기능을 결합합니다.가용성: Linux >= 2.6.30, FreeBSD >= 6.0, OpenBSD >= 2.7, AIX >= 7.1.
플래그를 사용하려면 리눅스 4.6 이상이 필요합니다.
Added in version 3.7.
- os.RWF_DSYNC¶
os.open()플래그인O_DSYNC의 쓰기당(per-write) 대응 기능을 제공합니다. 이 플래그 효과는 시스템 호출에 의해 기록된 데이터 범위에만 적용됩니다.가용성: Linux >= 4.7.
Added in version 3.7.
- os.RWF_SYNC¶
os.open()플래그인O_SYNC의 쓰기당(per-write) 대응 기능을 제공합니다. 이 플래그 효과는 시스템 호출에 의해 기록된 데이터 범위에만 적용됩니다.가용성: Linux >= 4.7.
Added in version 3.7.
- os.RWF_APPEND¶
os.open()플래그인O_APPEND의 쓰기당(per-write) 대응 기능을 제공합니다. 이 플래그는os.pwritev()에서만 유효하며, 시스템 호출에 의해 기록된 데이터 범위에만 효과가 있습니다. offset 인자는 쓰기 작업에 영향을 미치지 않으며 데이터는 항상 파일 끝에 추가됩니다. 다만, offset 인자가-1인 경우 현재 파일 offset 이 업데이트됩니다.가용성: Linux >= 4.16.
Added in version 3.10.
- os.read(fd, n, /)¶
파일 기술자 fd에서 최대 n 바이트를 읽습니다.
읽어 들인 바이트를 포함하는 바이트열을 돌려줍니다. fd 에 의해 참조된 파일의 끝에 도달하면, 빈 바이트열 객체가 반환됩니다.
참고
이 함수는 저수준 I/O용이며
os.open()또는pipe()에 의해 반환된 파일 기술자에 적용해야 합니다. 내장 함수open(),popen(),fdopen()에서 반환된 “파일 객체”나sys.stdin을 읽으려면 해당 객체의read()또는readline()메서드를 사용하십시오.버전 3.5에서 변경: 시스템 호출이 인터럽트 되고 시그널 처리기가 예외를 발생시키지 않으면, 함수는 이제
InterruptedError예외를 일으키는 대신 시스템 호출을 재시도합니다 (이유는 PEP 475를 참조하세요).
- os.readinto(fd, buffer, /)¶
파일 기술자 fd 에서 가변형인 버퍼 객체 buffer 로 읽어 들입니다.
buffer 는 가변형이며 bytes-like 여야 합니다. 성공 시 읽은 바이트 수를 반환합니다. 버퍼 크기보다 적은 양의 바이트가 읽힐 수도 있습니다. 신호(signal)에 의해 중단된 경우, 신호 처리기가 예외를 발생시키지 않는 한 하부 시스템 호출이 재시도됩니다. 다른 오류의 경우 재시도되지 않으며 예외가 발생합니다.
fd 가 파일 끝에 도달했거나 제공된 buffer 의 길이가 0이면 0을 반환합니다(이 경우 데이터를 읽지 않고 오류를 확인하는 데 사용될 수 있습니다). 음수는 절대로 반환하지 않습니다.
참고
이 함수는 저수준 I/O용으로 설계되었으며
os.open()또는os.pipe()에서 반환된 파일 기술자에 적용해야 합니다. 내장 함수open()또는sys.stdin이 반환한 “파일 객체”를 읽으려면 해당 객체의 멤버 함수인 예:io.BufferedIOBase.readinto(),io.BufferedIOBase.read(), 또는io.TextIOBase.read()를 사용하십시오.Added in version 3.14.
- os.sendfile(out_fd, in_fd, offset, count)¶
- os.sendfile(out_fd, in_fd, offset, count, headers=(), trailers=(), flags=0)
파일 기술자 in_fd에서 파일 기술자 out_fd 로 offset에서 시작하여 count 바이트를 복사합니다. 전송된 바이트 수를 반환합니다. EOF에 도달하면
0을 반환합니다.첫 번째 함수 서명은
sendfile()를 정의하는 모든 플랫폼에서 지원됩니다.리눅스에서, offset이
None으로 주어지면, in_fd의 현재 위치에서 바이트를 읽고 in_fd의 위치가 갱신됩니다.두 번째 사례는 headers 와 trailers 가 in_fd 의 데이터 전후에 기록되는 임의의 버퍼 시퀀스인 macOS 및 FreeBSD에서 사용할 수 있습니다. 첫 번째 사례와 동일한 값을 반환합니다.
macOS 및 FreeBSD에서 count 값이
0이면 in_fd 의 끝에 도달할 때까지 전송합니다.모든 플랫폼은 out_fd 파일 기술자로 소켓을 지원하고, 일부 플랫폼은 다른 유형(예를 들어 일반 파일, 파이프)들도 허락합니다.
이기종 플랫폼 응용 프로그램은 headers, trailers 및 flags 인자를 사용해서는 안 됩니다.
가용성: Unix, not WASI.
참고
sendfile()의 고수준 래퍼는,socket.socket.sendfile()을 보십시오.Added in version 3.3.
버전 3.9에서 변경: 매개 변수 out과 in의 이름이 out_fd와 in_fd로 변경되었습니다.
- os.SF_NODISKIO¶
- os.SF_MNOWAIT¶
- os.SF_SYNC¶
구현이 지원하는 경우,
sendfile()함수에 대한 매개 변수입니다.가용성: Unix, not WASI.
Added in version 3.3.
- os.SF_NOCACHE¶
구현이 이를 지원하는 경우 사용하는
sendfile()함수의 매개 변수입니다. 데이터는 가상 메모리에 캐시되지 않으며 이후에 해제됩니다.가용성: Unix, not WASI.
Added in version 3.11.
- os.set_blocking(fd, blocking, /)¶
지정된 파일 기술자의 블로킹 모드를 설정합니다. blocking이
False면O_NONBLOCK플래그를 설정하고, 그렇지 않으면 플래그를 지웁니다.get_blocking()과socket.socket.setblocking()도 참조하십시오.Added in version 3.5.
버전 3.12에서 변경: 윈도우에서 파이프 지원이 추가되었습니다.
- os.splice(src, dst, count, offset_src=None, offset_dst=None, flags=0)¶
파일 기술자 src 의 오프셋 offset_src 부터 시작하여 count 바이트를 파일 기술자 dst 의 오프셋 offset_dst 로 전송합니다.
flags 값을 지정하여 스플라이싱(splicing) 동작을 수정할 수 있습니다. 다음 변수 중 어느 것이든 비트 단위 OR(
|연산자)를 사용하여 결합하여 사용할 수 있습니다.SPLICE_F_MOVE가 지정되면 커널이 페이지를 복사하는 대신 이동하도록 요청하지만, 커널이 파이프에서 페이지를 이동할 수 없는 경우 여전히 복사가 발생할 수 있습니다.SPLICE_F_NONBLOCK이 지정되면 커럴은 I/O에서 블록되지 않도록 요청됩니다. 이는 스플라이스 파이프 작업을 비동기(nonblocking)로 만들지만, 스플라이스되는 파일 기술자가 차단될 수 있으므로 splice가 그럼에도 블록될 수 있습니다.SPLICE_F_MORE가 지정되면 후속 스플라이스에서 더 많은 데이터가 들어올 것임을 커널에 암시합니다.
At least one of the file descriptors must refer to a pipe. If offset_src is
None, then src is read from the current position; respectively for offset_dst. The offset associated to the file descriptor that refers to a pipe must beNone. The files pointed to by src and dst must reside in the same filesystem, otherwise anOSErroris raised witherrnoset toerrno.EXDEV.이 복사는 커널에서 사용자 공간으로 데이터를 전송한 다음 다시 커널로 전송하는 추가 비용 없이 수행됩니다. 또한, 일부 파일 시스템은 추가 최적화를 구현할 수 있습니다. 두 파일이 바이너리로 열린 것처럼 복사가 수행됩니다.
성공적으로 완료되면 파이프에 추가되거나 파이프로부터 추출된 바이트 수를 반환합니다. 반환 값이 0이면 입력의 끝을 의미합니다. src 가 파이프를 가리키는 경우, 이는 전송할 데이터가 없음을 의미하며 파이프의 쓰기 끝에 연결된 작성자가 없으므로 차단(block)하는 것이 무의미함을 나타냅니다.
더 보기
splice(2) 매뉴얼 페이지.
가용성: Linux >= 2.6.17 with glibc >= 2.5
Added in version 3.10.
- os.readv(fd, buffers, /)¶
파일 기술자 fd에서 여러 가변 바이트열류 객체 buffers로 읽어 들입니다. 데이터가 가득 찰 때까지 각 버퍼로 데이터를 전송한 다음 나머지 데이터를 보관하기 위해 시퀀스의 다음 버퍼로 이동합니다.
실제로 읽힌 총 바이트 수를 반환합니다. 이 값은 모든 객체의 총 용량보다 작을 수 있습니다.
운영 체제는 사용할 수 있는 버퍼 수에 한계(
sysconf()값'SC_IOV_MAX')를 설정할 수 있습니다.가용성: Unix.
Added in version 3.3.
- os.tcgetpgrp(fd, /)¶
fd(
os.open()에 의해 반환된 것과 같은 열린 파일 기술자)에 의해 주어진 터미널과 관련된 프로세스 그룹을 반환합니다.가용성: Unix, not WASI.
- os.tcsetpgrp(fd, pg, /)¶
fd(
os.open()에 의해 반환된 것과 같은 열린 파일 기술자)에 의해 주어진 터미널과 관련된 프로세스 그룹을 pg로 설정합니다.가용성: Unix, not WASI.
- os.ttyname(fd, /)¶
파일 기술자 fd와 관련된 터미널 장치를 나타내는 문자열을 돌려줍니다. fd 가 터미널 장치와 연관되어 있지 않으면, 예외가 발생합니다.
가용성: Unix.
- os.unlockpt(fd, /)¶
파일 기술자 fd 가 가리키는 마스터 의사 터미널(pseudo-terminal) 장치와 연결된 슬레이브 의사 터미널 장치의 잠금을 해제합니다. 실패하더라도 파일 기술자 fd 는 닫히지 않습니다.
C 표준 라이브러리 함수
unlockpt()를 호출합니다.가용성: Unix, not WASI.
Added in version 3.13.
- os.write(fd, str, /)¶
str 바이트열을 파일 기술자 fd 에 씁니다.
실제로 쓴 바이트 수를 반환합니다.
참고
이 함수는 저수준 I/O용으로 설계되었으며
os.open()또는pipe()에서 반환된 파일 기술자에 적용해야 합니다. 내장 함수open()또는popen()및fdopen()에 의해 반환된 “파일 객체”, 또는sys.stdout이나sys.stderr에 쓰려면 해당 객체의write()메서드를 사용하십시오.버전 3.5에서 변경: 시스템 호출이 인터럽트 되고 시그널 처리기가 예외를 발생시키지 않으면, 함수는 이제
InterruptedError예외를 일으키는 대신 시스템 호출을 재시도합니다 (이유는 PEP 475를 참조하세요).
- os.writev(fd, buffers, /)¶
buffers 내용을 파일 기술자 fd에 씁니다. buffers 는 바이트열류 객체의 시퀀스 여야 합니다. 버퍼는 배열 순서로 처리됩니다. 첫 번째 버퍼의 전체 내용은 두 번째 버퍼로 진행하기 전에 기록되고, 같은 식으로 계속 진행합니다.
실제로 쓴 총 바이트 수를 반환합니다.
운영 체제는 사용할 수 있는 버퍼 수에 한계(
sysconf()값'SC_IOV_MAX')를 설정할 수 있습니다.가용성: Unix.
Added in version 3.3.
터미널의 크기 조회하기¶
Added in version 3.3.
- os.get_terminal_size(fd=STDOUT_FILENO, /)¶
터미널 창의 크기를
(columns, lines)로 반환하는데,terminal_size형의 튜플입니다.선택적 인자
fd(기본값STDOUT_FILENO, 즉 표준 출력)는 조회할 파일 기술자를 지정합니다.파일 기술자가 터미널에 연결되어 있지 않으면,
OSError가 발생합니다.shutil.get_terminal_size()가 일반적으로 사용해야 하는 고수준 함수이며,os.get_terminal_size는 저수준 구현입니다.가용성: Unix, Windows.
파일 기술자의 상속¶
Added in version 3.4.
파일 기술자는 자식 프로세스가 파일 기술자를 상속받을 수 있는지를 나타내는 “상속 가능” 플래그를 가지고 있습니다. 파이썬 3.4부터, 파이썬에 의해 생성된 파일 기술자는 기본적으로 상속 불가능합니다.
UNIX에서 상속 불가능한 파일 기술자는 새 프로그램 실행 시 자식 프로세스에서 닫히고, 다른 파일 기술자들은 상속됩니다. 상속 불가능한 파일 기술자도 os.fork() 에서는 자식 프로세스에 의해 여전히 상속 된다는 점에 유의하십시오.
윈도우에서는, 항상 상속되는 표준 스트림(파일 기술자 0, 1, 2: stdin, stdout, stderr)을 제외하고, 상속 불가능한 핸들 및 파일 기술자는 자식 프로세스에서 닫힙니다. spawn* 함수를 사용하면, 상속 가능한 모든 핸들과 상속 가능한 모든 파일 기술자가 상속됩니다. subprocess 모듈을 사용하면, 표준 스트림을 제외한 모든 파일 기술자가 닫히고, 상속 가능한 핸들은 close_fds 매개 변수가 False 일 때만 상속됩니다.
WebAssembly 플랫폼에서 파일 기술자는 수정할 수 없습니다.
- os.get_inheritable(fd, /)¶
지정된 파일 기술자의 “상속 가능” 플래그를 가져옵니다 (논릿값).
- os.set_inheritable(fd, inheritable, /)¶
지정된 파일 기술자의 “상속 가능(inheritable)” 플래그를 설정합니다.
파일과 디렉터리¶
일부 유닉스 플랫폼에서, 이 함수 중 많은 것들이 다음 기능 중 하나 이상을 지원합니다:
파일 기술자 지정: 일반적으로
os모듈의 함수에 제공되는 path 인수는 파일 경로를 지정하는 문자열이어야 합니다. 그러나 일부 함수는 이제 해당 인자로 열린 파일 기술자를 수용합니다. 이 경우 함수는 해당 기술자가 가리키는 파일을 대상으로 작동합니다. POSIX 시스템에서 파이썬은f로 시작하는 변형 함수(예:chdir대신fchdir를 호출)를 실행합니다.os.supports_fd를 사용하여, 여러분의 플랫폼에서 특정 함수에 파일 기술자로 path를 지정할 수 있는지를 확인할 수 있습니다. 사용할 수 없을 때, 사용하면NotImplementedError를 발생시킵니다.함수가 dir_fd 나 follow_symlinks 인자도 지원하면, path 에 파일 기술자를 제공할 때, 이 중 하나를 지정하는 것은 에러입니다.
디렉터리 기술자에 대한 상대 경로: dir_fd 가
None이 아니면, 이는 디렉터리를 가리키는 파일 기술자여야 하며 작동할 경로는 상대적이어야 합니다. 이 경우 경로는 해당 디렉터리를 기준으로 합니다. 경로가 절대 경로이면 dir_fd 는 무시됩니다. POSIX 시스템에서 파이썬은at접미사가 붙고 필요에 따라f로 시작하는 변형 함수(예:access대신faccessat)를 호출합니다.os.supports_dir_fd를 사용하여, 여러분의 플랫폼에서 특정 함수에 dir_fd가 지원되는지를 확인할 수 있습니다. 사용할 수 없을 때, 사용하면NotImplementedError를 발생시킵니다.
심볼릭 링크를 따르지 않음: follow_symlinks 가
False이고 작업 대상 경로의 마지막 요소가 심볼릭 링크인 경우, 함수는 링크가 가리키는 파일 대신 심볼릭 링크 자체에 작동합니다. POSIX 시스템에서 파이썬은 해당 함수의l...변형을 호출합니다.os.supports_follow_symlinks를 사용하여, 여러분의 플랫폼에서 특정 함수에 follow_symlinks가 지원되는지를 확인할 수 있습니다. 사용할 수 없을 때, 사용하면NotImplementedError를 발생시킵니다.
- os.access(path, mode, *, dir_fd=None, effective_ids=False, follow_symlinks=True)¶
실제(real) uid/gid를 사용해서 path를 액세스할 수 있는지 검사합니다. 대부분의 연산은 유효한(effective) uid/gid를 사용할 것이므로, 이 함수는 suid/sgid 환경에서 호출하는 사용자가 지정된 path 에 대한 액세스 권한이 있는지 검사하는데 사용할 수 있습니다. path가 존재하는지를 검사하려면 mode 는
F_OK여야 하며, 권한을 검사하려면 하나 이상의R_OK,W_OK및X_OK를 OR 값일 수 있습니다. 액세스가 허용되면True를 반환하고, 그렇지 않으면False를 반환합니다. 더 자세한 정보는 유닉스 매뉴얼 페이지 access(2)를 참조하십시오.이 함수는 디렉터리 기술자에 상대적인 경로 와 심볼릭 링크를 따르지 않음을 지원할 수 있습니다.
effective_ids 가
True면,access()는 실제(real) uid/gid 대신 유효한(effective) uid/gid를 사용하여 액세스 검사를 수행합니다. effective_ids 는 플랫폼에서 지원되지 않을 수 있습니다;os.supports_effective_ids를 사용하여, 사용할 수 있는지를 확인할 수 있습니다. 사용할 수 없을 때, 사용하면NotImplementedError를 발생시킵니다.참고
예를 들어, 실제로
open()를 사용하여 파일을 열기 전에,access()를 사용하여 파일을 여는 권한이 있는지 확인하는 것은 보안 구멍을 만듭니다. 사용자가 파일을 확인하고 조작을 위해 열기 사이의 짧은 시간 간격을 악용할 수 있기 때문입니다. EAFP 기법을 사용하는 것이 좋습니다. 예를 들면:if os.access("myfile", os.R_OK): with open("myfile") as fp: return fp.read() return "some default data"
는 다음과 같이 쓰는 것이 더 좋습니다:
try: fp = open("myfile") except PermissionError: return "some default data" else: with fp: return fp.read()
참고
access()가 성공할 것임을 알릴 때도, I/O 연산이 실패할 수 있습니다. 특히 일반적인 POSIX 권한 비트 모델을 넘어서는 권한 의미가 있을 수 있는 네트워크 파일 시스템에 대한 연산에서 그럴 수 있습니다.버전 3.3에서 변경: dir_fd, effective_ids 및 follow_symlinks 매개 변수를 추가했습니다.
버전 3.6에서 변경: 경로류 객체를 받아들입니다.
- os.F_OK¶
- os.R_OK¶
- os.W_OK¶
- os.X_OK¶
path 의 존재 여부, 읽기 가능성, 쓰기 가능성 및 실행 가능성을 검사하기 위해,
access()의 mode 매개 변수로 전달할 값입니다.
- os.chdir(path)¶
현재 작업 디렉터리를 path로 변경합니다.
이 함수는 파일 기술자 지정을 지원할 수 있습니다. 기술자는 열려있는 파일이 아니라, 열려있는 디렉터리를 참조해야 합니다.
이 함수는
OSError와FileNotFoundError,PermissionError및NotADirectoryError와 같은 서브 클래스를 발생시킬 수 있습니다.path를 인자로 감사 이벤트(auditing event)os.chdir을 발생시킵니다.더 보기
진입 시 현재 작업 디렉터리를 변경하고 종료 시 이전 디렉터리로 복구하는
contextlib.chdir()컨텍스트 관리자.버전 3.3에서 변경: 일부 플랫폼에서 path 를 파일 기술자로 지정하는 지원이 추가되었습니다.
버전 3.6에서 변경: 경로류 객체를 받아들입니다.
- os.chflags(path, flags, *, follow_symlinks=True)¶
path 의 플래그를 숫자 flags로 설정합니다. flags는 다음 값들(
stat모듈에 정의된 대로)의 조합(비트별 OR)을 취할 수 있습니다:이 함수는 심볼릭 링크를 따르지 않음을 지원할 수 있습니다.
path,flags를 인자로 감사 이벤트(auditing event)os.chflags를 발생시킵니다.가용성: Unix, not WASI.
버전 3.3에서 변경: follow_symlinks 매개변수가 추가되었습니다.
버전 3.6에서 변경: 경로류 객체를 받아들입니다.
- os.chmod(path, mode, *, dir_fd=None, follow_symlinks=True)¶
path의 모드를 숫자 mode로 변경합니다. mode 는 다음 값들(
stat모듈에 정의된 대로)이나 이들의 비트별 OR 조합을 취할 수 있습니다:이 함수는 파일 기술자 지정, 디렉터리 기술자에 상대적인 경로 및 심볼릭 링크를 따르지 않음을 지원할 수 있습니다.
참고
Windows는
chmod()를 지원하지만, 이를 통해 파일의 읽기 전용 플래그만 설정할 수 있습니다(stat.S_IWRITE및stat.S_IREAD상수 또는 그에 해당하는 정수 값 사용). 다른 모든 비트는 무시됩니다. Windows에서 follow_symlinks 의 기본값은False입니다.이 함수는 WASI에서 제한될 수 있습니다. 자세한 내용은 웹어셈블리 플랫폼 를 참조하십시오.
path,mode,dir_fd를 인자로 감사 이벤트(auditing event)os.chmod를 발생시킵니다.버전 3.3에서 변경: path를 열린 파일 기술자로 지정하는 지원과 dir_fd 및 follow_symlinks 인자가 추가되었습니다.
버전 3.6에서 변경: 경로류 객체를 받아들입니다.
버전 3.13에서 변경: Windows에서 파일 기술자 및 follow_symlinks 인자에 대한 지원이 추가되었습니다.
- os.chown(path, uid, gid, *, dir_fd=None, follow_symlinks=True)¶
path 의 소유자와 그룹 ID를 숫자 uid 와 gid로 변경합니다. ID 중 하나를 변경하지 않으려면, 그것을 -1로 설정하십시오.
이 함수는 파일 기술자 지정, 디렉터리 기술자에 상대적인 경로 및 심볼릭 링크를 따르지 않음을 지원할 수 있습니다.
숫자 ID 이외에 이름을 허용하는 고수준 함수는
shutil.chown()를 참조하십시오.path,uid,gid,dir_fd를 인자로 감사 이벤트(auditing event)os.chown을 발생시킵니다.버전 3.3에서 변경: path를 열린 파일 기술자로 지정하는 지원과 dir_fd 및 follow_symlinks 인자가 추가되었습니다.
버전 3.6에서 변경: 경로류 객체를 지원합니다.
- os.chroot(path)¶
현재 프로세스의 루트 디렉터리를 path로 변경합니다.
가용성: Unix, not WASI, not Android.
버전 3.6에서 변경: 경로류 객체를 받아들입니다.
- os.fchdir(fd)¶
현재 작업 디렉터리를 파일 기술자 fd가 나타내는 디렉터리로 변경합니다. 기술자는 열려있는 파일이 아니라 열려있는 디렉터리를 참조해야 합니다. 파이썬 3.3부터는,
os.chdir(fd)와 같습니다.path를 인자로 감사 이벤트(auditing event)os.chdir을 발생시킵니다.가용성: Unix.
- os.getcwd()¶
현재 작업 디렉터리를 나타내는 문자열을 반환합니다.
- os.getcwdb()¶
현재 작업 디렉터리를 나타내는 바이트열을 반환합니다.
버전 3.8에서 변경: 이 함수는 이제 윈도우에서 ANSI 코드 페이지가 아닌 UTF-8 인코딩을 사용합니다: 이유는 PEP 529를 참조하십시오. 이 함수는 윈도우에서 더는 폐지되지 않습니다.
- os.lchflags(path, flags)¶
path 의 플래그를,
chflags()처럼, 숫자 flags로 설정하지만, 심볼릭 링크를 따르지 않습니다. 파이썬 3.3부터는,os.chflags(path, flags, follow_symlinks=False)와 같습니다.path,flags를 인자로 감사 이벤트(auditing event)os.chflags를 발생시킵니다.가용성: Unix, not WASI.
버전 3.6에서 변경: 경로류 객체를 받아들입니다.
- os.lchmod(path, mode)¶
path 모드를 숫자 mode로 변경합니다. path가 심볼릭 링크면, 이 함수는 타깃이 아닌 심볼릭 링크에 영향을 미칩니다. mode의 가능한 값은
chmod()문서를 참조하십시오. 파이썬 3.3부터는,os.chmod(path, mode, follow_symlinks=False)와 같습니다.lchmod()은 POSIX의 일부는 아니지만, Unix 구현에서 심볼릭 링크의 모드 변경이 지원되는 경우 포함되어 있을 수 있습니다.path,mode,dir_fd를 인자로 감사 이벤트(auditing event)os.chmod를 발생시킵니다.가용성: Unix, Windows, not Linux, FreeBSD >= 1.3, NetBSD >= 1.3, not OpenBSD
버전 3.6에서 변경: 경로류 객체를 받아들입니다.
버전 3.13에서 변경: 윈도우 지원이 추가되었습니다.
- os.lchown(path, uid, gid)¶
path 의 소유자와 그룹 ID를 숫자 uid 와 gid로 변경합니다. 이 함수는 심볼릭 링크를 따르지 않습니다. 파이썬 3.3부터는,
os.chown(path, uid, gid, follow_symlinks=False)와 같습니다.path,uid,gid,dir_fd를 인자로 감사 이벤트(auditing event)os.chown을 발생시킵니다.가용성: Unix.
버전 3.6에서 변경: 경로류 객체를 받아들입니다.
- os.link(src, dst, *, src_dir_fd=None, dst_dir_fd=None, follow_symlinks=True)¶
src를 가리키는 dst 라는 이름의 하드 링크를 만듭니다.
이 함수는 디렉터리 기술자에 상대적인 경로 및 심볼릭 링크를 따르지 않음 을 위해 src_dir_fd 및/또는 dst_dir_fd 를 지정하는 것을 지원할 수 있습니다. Windows에서 follow_symlinks 의 기본값은
False입니다.src,dst,src_dir_fd,dst_dir_fd를 인자로 감사 이벤트(auditing event)os.link를 발생시킵니다.가용성: Unix, Windows.
버전 3.2에서 변경: 윈도우 지원이 추가되었습니다.
버전 3.3에서 변경: src_dir_fd, dst_dir_fd, 그리고 follow_symlinks 매개 변수가 추가되었습니다.
버전 3.6에서 변경: src 및 dst로 경로류 객체를 받아들입니다.
- os.listdir(path='.')¶
path에 의해 주어진 디렉터리에 있는 항목들의 이름을 담고 있는 리스트를 반환합니다. 리스트는 임의의 순서로 나열되며, 디렉터리에 존재하더라도 특수 항목
'.'과'..'는 포함하지 않습니다. 이 함수 호출 중에 디렉터리에서 파일이 제거되거나 추가되면, 해당 파일의 이름이 포함되는지는 지정되지 않습니다.path는 경로류 객체 일 수 있습니다. path 가
bytes형이면 (직접 또는PathLike인터페이스를 통해 간접적으로), 반환되는 파일명도bytes형입니다; 다른 모든 상황에서는 형str이 됩니다.이 함수는 또한 파일 기술자 지정을 지원할 수 있습니다; 파일 기술자는 디렉터리를 참조해야 합니다.
path를 인자로 감사 이벤트(auditing event)os.listdir을 발생시킵니다.참고
str파일명을bytes로 인코딩하려면,fsencode()를 사용하십시오.더 보기
scandir()함수는 파일 어트리뷰트 정보와 함께 디렉터리 항목을 반환하므로, 많은 일반적인 사용 사례에서 더 나은 성능을 제공합니다.버전 3.2에서 변경: path 매개 변수는 선택 사항이 되었습니다.
버전 3.3에서 변경: path에 열린 파일 기술자를 지정하는 지원이 추가되었습니다.
버전 3.6에서 변경: 경로류 객체를 받아들입니다.
버전 3.15에서 변경:
os.listdir(-1)이 현재 디렉터리를 나열하는 대신 이제OSError(errno.EBADF)를 발생시킵니다.
- os.listdrives()¶
Windows 시스템의 드라이브 이름이 포함된 리스트를 반환합니다.
드라이브 이름은 일반적으로
'C:\\'와 같은 형태입니다. 모든 드라이브 이름이 볼륨과 연결되는 것은 아니며, 권한, 네트워크 연결 또는 미디어 부재 등 다양한 이유로 일부에 접근할 수 없을 수도 있습니다. 이 함수는 액세스 가능 여부를 테스트하지 않습니다.드라이브 이름을 수집하는 중에 오류가 발생하면
OSError를 발생시킬 수 있습니다.인수 없이
os.listdrives를 실행할 때 감사 이벤트(auditing event) 를 발생시킵니다.가용성: Windows
Added in version 3.12.
- os.listmounts(volume)¶
Windows 시스템에서 볼륨의 마운트 지점이 포함된 리스트를 반환합니다.
volume 은
os.listvolumes()에서 반환되는 것과 같은 GUID 경로로 표현되어야 합니다. 볼륨이 여러 위치에 마운트되거나 아예 마운트되지 않을 수 있습니다. 후자의 경우 리스트가 비어 있게 됩니다. 볼륨과 관련이 없는 마운트 지점은 이 함수에서 반환되지 않습니다.이 함수가 반환하는 마운트 지점은 절대 경로이며 드라이브 이름보다 길 수 있습니다.
볼륨을 인식할 수 없거나 경로를 수집하는 중에 오류가 발생하면
OSError를 발생시킵니다.volume인자를 가진os.listmounts실행 시 감사 이벤트(auditing event) 를 발생시킵니다.가용성: Windows
Added in version 3.12.
- os.listvolumes()¶
시스템 내의 볼륨이 포함된 리스트를 반환합니다.
볼륨은 일반적으로
\\?\Volume{xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}\와 같은 형태의 GUID 경로로 표현됩니다. 권한이 허용되는 경우 파일은 보통 GUID 경로를 통해 접근할 수 있습니다. 하지만 사용자들은 대개 이에 익숙하지 않으므로, 이 함수의 권장 사용법은os.listmounts()를 사용하여 마운트 지점을 가져오는 것입니다.볼륨을 수집하는 중에 오류가 발생하면
OSError를 발생시킬 수 있습니다.인수 없이
os.listvolumes를 실행할 때 감사 이벤트(auditing event) 를 발생시킵니다.가용성: Windows
Added in version 3.12.
- os.lstat(path, *, dir_fd=None)¶
주어진 경로에 대해
lstat()시스템 호출과 동일한 동작을 수행합니다.stat()과 유사하지만 심볼릭 링크를 따르지 않습니다.stat_result객체를 반환합니다.심볼릭 링크를 지원하지 않는 플랫폼에서, 이 함수는
stat()의 별칭입니다.파이썬 3.3부터는,
os.stat(path, dir_fd=dir_fd, follow_symlinks=False)와 같습니다.이 기능은 디렉터리 기술자에 상대적인 경로도 지원할 수 있습니다.
더 보기
stat()함수.버전 3.2에서 변경: 윈도우 6.0 (Vista) 심볼릭 링크에 대한 지원이 추가되었습니다.
버전 3.3에서 변경: dir_fd 매개 변수가 추가되었습니다.
버전 3.6에서 변경: 경로류 객체를 받아들입니다.
버전 3.8에서 변경: 윈도우에서, 이제 심볼릭 링크와 디렉터리 정션(directory junction)을 포함하는 다른 경로를 나타내는 재해석 지점(reparse point, 이름 서로게이트)을 엽니다. 다른 유형의 재해석 지점은 운영 체제에서
stat()에서 처럼 결정됩니다.
- os.mkdir(path, mode=0o777, *, dir_fd=None)¶
숫자 모드 mode로 path 라는 디렉터리를 만듭니다.
디렉터리가 이미 존재하면
FileExistsError가 발생합니다. 경로 내의 상위 디렉터리가 존재하지 않으면FileNotFoundError가 발생합니다.일부 시스템에서는, mode가 무시됩니다. 모드가 사용될 때, 현재 umask 값으로 먼저 마스킹합니다. 마지막 9비트 (즉, mode 의 8진 표현의 마지막 3자리 수) 이외의 비트가 설정되면, 그 의미는 플랫폼에 따라 다릅니다. 일부 플랫폼에서는, 이것들이 무시되며, 설정하려면 명시적으로
chmod()를 호출해야 합니다.Windows에서 mode 값이
0o700인 경우 현재 사용자 및 관리자만 액세스할 수 있도록 새 디렉터리에 접근 제어를 적용하는 방식으로 특별하게 처리됩니다. 다른 mode 값은 무시됩니다.이 기능은 디렉터리 기술자에 상대적인 경로도 지원할 수 있습니다.
임시 디렉터리를 만들 수도 있습니다;
tempfile모듈의tempfile.mkdtemp()함수를 참조하십시오.path,mode,dir_fd를 인자로 감사 이벤트(auditing event)os.mkdir을 발생시킵니다.버전 3.3에서 변경: dir_fd 매개 변수가 추가되었습니다.
버전 3.6에서 변경: 경로류 객체를 받아들입니다.
버전 3.13에서 변경: Windows에서 이제 mode 값이
0o700인 경우를 처리합니다.
- os.makedirs(name, mode=0o777, exist_ok=False, *, parent_mode=None)¶
재귀적 디렉터리 생성 함수.
mkdir()와 비슷하지만, 말단 디렉터리를 포함하는 데 필요한 모든 중간 수준 디렉터리들을 만듭니다.mode 매개변수는 잎 디렉터리를 생성하기 위해
mkdir()에 전달됩니다. 해석 방식은 mkdir() 설명 을 참조하십시오. 새로 생성되는 모든 상위 디렉터리의 파일 권한 비트를 설정하려면makedirs()를 호출하기 전에 umask를 설정하면 됩니다. 기존 상위 디렉터리의 파일 권한 비트는 변경되지 않습니다.exist_ok 가
False(기본값)인 경우, 대상 디렉터리가 이미 존재하면FileExistsError가 발생합니다.parent_mode 가
None이 아닌 경우, 새로 생성되는 모든 중간 수준 디렉터리의 모드로 사용됩니다. mode 와 마찬가지로, 이 값은 프로세스의 umask 값과 결합됩니다; mkdir() 설명 을 참조하십시오. 그렇지 않은 경우, 중간 디렉터리는 기본 모드로 생성되며 이 또한 umask의 영향을 받습니다.참고
makedirs()는 생성할 경로 요소에pardir(예를 들어, 유닉스 시스템의 경우 “..”)이 포함되어 있으면 혼란해 할 수 있습니다.이 함수는 UNC 경로를 올바르게 처리합니다.
path,mode,dir_fd를 인자로 감사 이벤트(auditing event)os.mkdir을 발생시킵니다.버전 3.2에서 변경: exist_ok 매개 변수가 추가되었습니다.
버전 3.4.1에서 변경: 파이썬 3.4.1 이전에는, exist_ok 가
True이고 디렉터리가 존재한다면, mode 가 기존 디렉터리의 모드와 일치하지 않을 때,makedirs()는 여전히 에러를 발생시킵니다. 이 동작은 안전하게 구현할 수 없으므로, 파이썬 3.4.1에서 제거되었습니다. bpo-21082를 참조하십시오.버전 3.6에서 변경: 경로류 객체를 받아들입니다.
버전 3.7에서 변경: mode 인자가 더 이상 새로 생성된 중간 수준 디렉터리의 파일 권한 비트에 영향을 미치지 않습니다.
Added in version 3.15: parent_mode 매개 변수입니다. Python 3.6 및 이전 버전의 동작(모든 생성된 디렉터리에 mode 가 적용됨)과 일치하게 하려면
parent_mode=mode를 전달하십시오.
- os.mkfifo(path, mode=0o666, *, dir_fd=None)¶
숫자 모드 mode로 path 라는 이름의 FIFO(이름있는 파이프)를 만듭니다. 현재 umask 값으로 먼저 모드를 마스킹합니다.
이 기능은 디렉터리 기술자에 상대적인 경로도 지원할 수 있습니다.
FIFO는 일반 파일처럼 액세스할 수 있는 파이프입니다. FIFO는 삭제될 때까지 존재합니다 (예를 들어
os.unlink()로). 일반적으로, FIFO는 “클라이언트”와 “서버” 유형 프로세스 사이에서 랑데부로 사용됩니다: 서버는 FIFO를 읽기 용도로 열고, 클라이언트는 쓰기 용도로 엽니다.mkfifo()가 FIFO를 열지는 않는다는 점에 유의하십시오 — 단지 랑데부 포인트를 생성합니다.가용성: Unix, not WASI.
버전 3.3에서 변경: dir_fd 매개 변수가 추가되었습니다.
버전 3.6에서 변경: 경로류 객체를 받아들입니다.
- os.mknod(path, mode=0o600, device=0, *, dir_fd=None)¶
path 라는 이름의 파일 시스템 노드(파일, 장치 특수 파일 또는 명명된 파이프)를 생성합니다. mode 는 사용될 권한과 생성될 노드의 유형을 모두 지정하며, 이는
stat.S_IFREG,stat.S_IFCHR,stat.S_IFBLK, 및stat.S_IFIFO중 하나와 결합(비트 논리합)됩니다.stat.S_IFCHR및stat.S_IFBLK의 경우, device 가 새로 생성되는 장치 특수 파일을 정의하며(아마도os.makedev()를 사용함), 그렇지 않으면 무시됩니다.이 기능은 디렉터리 기술자에 상대적인 경로도 지원할 수 있습니다.
가용성: Unix, not WASI.
버전 3.3에서 변경: dir_fd 매개 변수가 추가되었습니다.
버전 3.6에서 변경: 경로류 객체를 받아들입니다.
- os.makedev(major, minor, /)¶
주 장치 번호와 부 장치 번호로 원시 장치 번호를 조립합니다.
- os.NODEV¶
존재하지 않는 장치.
Added in version 3.15.
- os.pathconf(path, name)¶
이름있는 파일과 관련된 시스템 구성 정보를 반환합니다. name 은 조회할 구성 값을 지정합니다; 정의된 시스템 값의 이름인 문자열일 수 있습니다; 이 이름은 여러 표준(POSIX.1, 유닉스 95, 유닉스 98 및 기타)에서 지정됩니다. 일부 플랫폼은 추가적인 이름도 정의합니다. 호스트 운영 체제에 알려진 이름은
pathconf_names딕셔너리에서 제공됩니다. 이 매핑에 포함되지 않은 구성 변수를 위해, name에 정수를 전달하는 것도 허용됩니다.name 이 문자열이고 알 수 없으면,
ValueError가 발생합니다. name에 대한 특정 값이 호스트 시스템에서 지원되지 않으면,pathconf_names에 포함되어 있어도, 에러 번호가errno.EINVAL인OSError가 발생합니다.이 함수는 파일 기술자 지정을 지원할 수 있습니다.
가용성: Unix.
버전 3.6에서 변경: 경로류 객체를 받아들입니다.
- os.pathconf_names¶
pathconf()와fpathconf()가 받아들이는 이름을 호스트 운영 체제에서 해당 이름에 대해 정의된 정숫값으로 매핑하는 딕셔너리. 이것은 시스템에 알려진 이름 집합을 판별하는 데 사용될 수 있습니다.가용성: Unix.
- os.readlink(path, *, dir_fd=None)¶
심볼릭 링크가 가리키는 경로를 나타내는 문자열을 반환합니다. 결과는 절대 또는 상대 경로명일 수 있습니다; 상대 경로이면
os.path.join(os.path.dirname(path), result)를 사용하여 절대 경로명으로 변환할 수 있습니다.path 가 (직접 또는
PathLike인터페이스를 통해 간접적으로) 문자열 객체면, 결과도 문자열 객체가 되고, 호출은 UnicodeDecodeError를 발생시킬 수 있습니다. path 가 (직접 또는 간접적으로) 바이트열 객체면, 결과는 바이트열 객체가 됩니다.이 기능은 디렉터리 기술자에 상대적인 경로도 지원할 수 있습니다.
링크를 포함할 수 있는 경로를 결정(resolve)하려고 할 때,
realpath()를 사용하여 재귀와 플랫폼 차이를 올바르게 처리하십시오.가용성: Unix, Windows.
버전 3.2에서 변경: 윈도우 6.0 (Vista) 심볼릭 링크에 대한 지원이 추가되었습니다.
버전 3.3에서 변경: dir_fd 매개 변수가 추가되었습니다.
버전 3.6에서 변경: 유닉스에서 경로류 객체를 받아들입니다.
버전 3.8에서 변경: 윈도우에서 경로류 객체와 바이트열 객체를 받아들입니다.
디렉터리 정션(directory junction)에 대한 지원이 추가되었고, 이전에 반환되던 선택적 “print name” 필드 대신 치환 경로(일반적으로
\\?\접두사를 포함합니다)를 반환하도록 변경되었습니다.
- os.remove(path, *, dir_fd=None)¶
path 파일을 삭제합니다. path 가 디렉터리인 경우
OSError가 발생합니다. 디렉터리를 제거하려면rmdir()을 사용하십시오. 파일이 존재하지 않는 경우FileNotFoundError가 발생합니다.이 함수는 디렉터리 기술자에 상대적인 경로를 지원할 수 있습니다.
윈도우에서, 사용 중인 파일을 제거하려고 시도하면 예외가 발생합니다; 유닉스에서는 디렉터리 항목이 제거되지만, 원본 파일이 더는 사용되지 않을 때까지 파일에 할당된 저장 공간을 사용할 수 없습니다.
이 함수는 의미 적으로
unlink()와 같습니다.path,dir_fd를 인자로 감사 이벤트(auditing event)os.remove를 발생시킵니다.버전 3.3에서 변경: dir_fd 매개 변수가 추가되었습니다.
버전 3.6에서 변경: 경로류 객체를 받아들입니다.
- os.removedirs(name)¶
재귀적으로 디렉터리를 제거합니다.
rmdir()처럼 동작하는데 다음과 같은 차이가 있습니다. 말단 디렉터리가 성공적으로 제거되면,removedirs()는 에러가 발생할 때까지 path에 언급된 모든 상위 디렉터리를 연속적으로 제거하려고 합니다 (에러는 무시되는데, 이는 일반적으로 부모 디렉터리가 비어 있음을 뜻하기 때문입니다). 예를 들어,os.removedirs('foo/bar/baz')는 먼저'foo/bar/baz'디렉터리를 제거한 다음,'foo/bar'및'foo'가 비어 있으면 제거합니다. 말단 디렉터리를 성공적으로 제거할 수 없으면,OSError를 발생시킵니다.path,dir_fd를 인자로 감사 이벤트(auditing event)os.remove를 발생시킵니다.버전 3.6에서 변경: 경로류 객체를 받아들입니다.
- os.rename(src, dst, *, src_dir_fd=None, dst_dir_fd=None)¶
파일 또는 디렉터리 src의 이름을 dst로 바꿉니다. dst가 존재하면, 많은 경우에
OSError서브 클래스로 연산이 실패합니다:Windows에서 dst 가 존재하면 항상
FileExistsError가 발생합니다. src 와 dst 가 서로 다른 파일 시스템에 있는 경우 작업이 실패할 수 있습니다. 다른 파일 시스템으로의 이동을 지원하려면shutil.move()를 사용하십시오.Unix에서 src 가 파일이고 dst 가 디렉터리이거나 그 반대의 경우, 각각
IsADirectoryError또는NotADirectoryError가 발생합니다. 둘 다 디렉터리이고 dst 가 비어 있는 경우, dst 는 조용히 교체됩니다. dst 가 비어 있지 않은 디렉터리인 경우OSError가 발생합니다. 둘 다 파일인 경우, 사용자가 권한을 가지고 있다면 dst 는 조용히 교체됩니다. 일부 Unix 변종(flavors)에서는 src 와 dst 가 서로 다른 파일 시스템에 있는 경우 작업이 실패할 수 있습니다. 성공하면 이름 변경은 원자적 연산으로 수행됩니다(이는 POSIX 요구 사항입니다).이 함수는 디렉터리 기술자에 상대적인 경로를 제공하도록 src_dir_fd 와/나 dst_dir_fd 를 지정하는 것을 지원할 수 있습니다.
플랫폼에 무관하게 대상을 덮어쓰길 원하면,
replace()를 사용하십시오.src,dst,src_dir_fd,dst_dir_fd를 인자로 감사 이벤트(auditing event)os.rename을 발생시킵니다.버전 3.3에서 변경: src_dir_fd 및 dst_dir_fd 매개 변수가 추가되었습니다.
버전 3.6에서 변경: src 및 dst로 경로류 객체를 받아들입니다.
- os.renames(old, new)¶
재귀적 디렉터리 또는 파일 이름 바꾸기 함수.
rename()처럼 작동하지만, 새 경로명이 유효하도록 만들기 위해 먼저 필요한 중간 디렉터리를 만드는 점이 다릅니다. 이름을 변경한 후에는, 이전 이름의 가장 오른쪽 경로 세그먼트에 해당하는 디렉터리를removedirs()를 사용하여 제거합니다.참고
이 함수는 말단 디렉터리나 파일을 제거하는 데 필요한 권한이 없을 때, 새 디렉터리 구조를 만든 상태에서 실패할 수 있습니다.
src,dst,src_dir_fd,dst_dir_fd를 인자로 감사 이벤트(auditing event)os.rename을 발생시킵니다.버전 3.6에서 변경: old 와 new 에 경로류 객체를 받아들입니다.
- os.replace(src, dst, *, src_dir_fd=None, dst_dir_fd=None)¶
src 파일 또는 디렉터리의 이름을 dst 로 바꿉니다. dst 가 비어 있지 않은 디렉터리인 경우
OSError가 발생합니다. dst 가 존재하고 파일인 경우, 사용자가 권한을 가지고 있다면 조용히 교체됩니다. src 와 dst 가 서로 다른 파일 시스템에 있는 경우 작업이 실패할 수 있습니다. 성공하면 이름 변경은 원자적 연산으로 수행됩니다(이는 POSIX 요구 사항입니다).이 함수는 디렉터리 기술자에 상대적인 경로를 제공하도록 src_dir_fd 와/나 dst_dir_fd 를 지정하는 것을 지원할 수 있습니다.
src,dst,src_dir_fd,dst_dir_fd를 인자로 감사 이벤트(auditing event)os.rename을 발생시킵니다.Added in version 3.3.
버전 3.6에서 변경: src 및 dst로 경로류 객체를 받아들입니다.
- os.rmdir(path, *, dir_fd=None)¶
path 디렉터리를 삭제합니다. 디렉터리가 존재하지 않거나 비어 있지 않은 경우 각각
FileNotFoundError또는OSError가 발생합니다. 전체 디렉터리 트리를 제거하려면shutil.rmtree()를 사용할 수 있습니다.이 함수는 디렉터리 기술자에 상대적인 경로를 지원할 수 있습니다.
path,dir_fd를 인자로 감사 이벤트(auditing event)os.rmdir을 발생시킵니다.버전 3.3에서 변경: dir_fd 매개 변수가 추가되었습니다.
버전 3.6에서 변경: 경로류 객체를 받아들입니다.
- os.scandir(path='.')¶
path로 지정된 디렉터리 내의 항목에 대응하는
os.DirEntry객체의 이터레이터를 돌려줍니다. 항목은 임의의 순서로 제공되며, 특수 항목'.'및'..'는 포함되지 않습니다. 이터레이터를 만든 후에 디렉터리에서 파일이 제거되거나 추가되면, 해당 파일의 항목이 포함되는지는 지정되지 않습니다.listdir()대신scandir()를 사용하면, 디렉터리를 검색할 때 운영 체제가 제공한다면os.DirEntry객체가 파일 유형과 파일 어트리뷰트 정보를 제공하기 때문에, 이것들이 필요한 코드의 성능을 크게 개선할 수 있습니다. 모든os.DirEntry메서드가 시스템 호출을 수행할 수 있지만, 일반적으로is_dir()및is_file()는 심볼릭 링크에 대해서만 시스템 호출을 요구합니다;os.DirEntry.stat()는 유닉스에서 항상 시스템 호출을 요구하지만 윈도우에서는 심볼릭 링크에 대해서만 시스템 호출을 요구합니다.path 는 경로류 객체 일 수 있습니다. path 가 (직접 또는
PathLike인터페이스를 통해 간접적으로)bytes형이면, 각os.DirEntry의name및path어트리뷰트의 형은bytes입니다. 다른 모든 상황에서는 형str이 됩니다.이 함수는 또한 파일 기술자 지정을 지원할 수 있습니다; 파일 기술자는 디렉터리를 참조해야 합니다.
path를 인자로 감사 이벤트(auditing event)os.scandir을 발생시킵니다.scandir()이터레이터는 컨텍스트 관리자 프로토콜을 지원하고 다음과 같은 메서드를 제공합니다:- scandir.close()¶
이터레이터를 닫고 확보한 자원을 반납합니다.
이터레이터가 소진되거나 가비지 수집될 때 또는 이터레이션 중에 에러가 발생하면 자동으로 호출됩니다. 하지만 명시적으로 호출하거나
with문을 사용하는 것이 좋습니다.Added in version 3.6.
다음 예제는 주어진 path의
'.'로 시작하지 않는 모든 파일(디렉터리 제외)을 표시하기 위한scandir()의 간단한 사용을 보여줍니다.entry.is_file()호출은 일반적으로 추가 시스템 호출을 하지 않습니다:with os.scandir(path) as it: for entry in it: if not entry.name.startswith('.') and entry.is_file(): print(entry.name)
참고
Unix 기반 시스템에서
scandir()은 시스템의 opendir() 및 readdir() 함수를 사용합니다. Windows에서는 Win32 FindFirstFileW 및 FindNextFileW 함수를 사용합니다.Added in version 3.5.
버전 3.6에서 변경: 컨텍스트 관리자 프로토콜과
close()메서드에 대한 지원이 추가되었습니다.scandir()이터레이터가 소진되지도 않고 명시적으로 닫히지도 않은 경우, 파괴자에서ResourceWarning이 발생합니다.이 함수는 경로류 객체를 받아들입니다.
버전 3.7에서 변경: 유닉스에서 파일 기술자에 대한 지원이 추가되었습니다.
버전 3.15에서 변경:
os.scandir(-1)은 이제 현재 디렉터리를 나열하는 대신OSError(errno.EBADF)를 발생시킵니다.
- class os.DirEntry¶
디렉터리 항목의 파일 경로와 다른 파일 어트리뷰트를 노출하기 위해
scandir()에 의해 산출되는 객체.scandir()는 추가 시스템 호출 없이 가능한 많은 정보를 제공합니다.stat()또는lstat()시스템 호출이 이루어지면,os.DirEntry객체는 결과를 캐시 합니다.os.DirEntry인스턴스는 수명이 긴 데이터 구조에 저장하는 용도가 아닙니다; 파일 메타 데이터가 변경되었거나scandir()를 호출한 후 오랜 시간이 지났음을 안다면,os.stat(entry.path)를 호출하여 최신 정보를 가져오십시오.os.DirEntry메서드는 운영 체제 시스템 호출을 할 수 있으므로,OSError를 일으킬 수도 있습니다. 에러에 대해 매우 세부적인 제어가 필요하면,os.DirEntry메서드 중 하나를 호출할 때OSError를 잡은 후 적절하게 처리할 수 있습니다.경로류 객체로 직접 사용할 수 있도록,
os.DirEntry는PathLike인터페이스를 구현합니다.제공된 설명이 없으므로 원문 유지:
DirEntryobjects are generic over the type of the path (strorbytes).os.DirEntry인스턴스의 어트리뷰트 및 메서드는 다음과 같습니다:- name¶
scandir()path 인자에 상대적인, 항목의 기본(base) 파일명.name어트리뷰트는scandir()path 인자가bytes형이면bytes고, 그렇지 않으면str입니다. 바이트열 파일명을 디코딩하려면fsdecode()를 사용하십시오.
- path¶
The entry’s path name: equivalent to
os.path.join(scandir_path, entry.name)where scandir_path is the originalscandir()path argument. Apart from the filename, the path preserves the originalscandir()argument. If thescandir()path argument was relative, thepathattribute is also relative. Changing the current working directory after creating thescandir()iterator may cause later uses ofpathto resolve differently. On some platforms, the constructed path may not be valid if the originalscandir()argument was usable for enumeration but not for joining with the entry name. If thescandir()path argument was a file descriptor, thepathattribute is the same as thenameattribute.path어트리뷰트는scandir()path 인자가bytes형이면bytes고, 그렇지 않으면str입니다. 바이트열 파일명을 디코딩하려면fsdecode()를 사용하십시오.
- inode()¶
항목의 아이노드(inode) 번호를 반환합니다.
결과는
os.DirEntry객체에 캐시 됩니다. 최신 정보를 가져오려면os.stat(entry.path, follow_symlinks=False).st_ino를 사용하십시오.최초의 캐시 되지 않은 호출에서, 윈도우 에서는 시스템 호출이 필요하지만, 유닉스에서는 그렇지 않습니다.
- is_dir(*, follow_symlinks=True)¶
이 항목이 디렉터리 또는 디렉터리를 가리키는 심볼릭 링크면
True를 반환합니다; 항목이 다른 종류의 파일이거나 다른 종류의 파일을 가리키면, 또는 더는 존재하지 않으면False를 반환합니다.follow_symlinks 가
False면, 이 항목이 디렉터리일 때만 (심볼릭 링크를 따르지 않고)True를 반환합니다; 항목이 다른 종류의 파일이거나 더는 존재하지 않으면False를 반환합니다.결과는 follow_symlinks 가
True및False일 때에 대해 별도로os.DirEntry객체에 캐시 됩니다. 최신 정보를 가져오려면,stat.S_ISDIR()로os.stat()을 호출하십시오.최초의 캐시 되지 않은 호출에서, 대부분 시스템 호출이 필요하지 않습니다. 특히, 심볼릭 링크가 아니면, 윈도우나 유닉스 모두 시스템 호출이 필요하지 않은데, 네트워크 파일 시스템과 같이
dirent.d_type == DT_UNKNOWN를 반환하는 특정 유닉스 파일 시스템은 예외입니다. 항목이 심볼릭 링크면, follow_symlinks 가False가 아닌 이상, 심볼릭 링크를 따르기 위해 시스템 호출이 필요합니다.이 메서드는,
PermissionError와 같은,OSError를 발생시킬 수 있지만,FileNotFoundError는 잡혀서 발생하지 않습니다.
- is_file(*, follow_symlinks=True)¶
이 항목이 파일이나 파일을 가리키는 심볼릭 링크면
True를 반환합니다; 항목이 디렉터리 또는 다른 비 파일 항목이거나, 그런 것을 가리키거나, 더는 존재하지 않으면False를 반환합니다.follow_symlinks 가
False면, 이 항목이 파일일 때만 (심볼릭 링크를 따르지 않고)True를 반환합니다; 항목이 디렉터리 나 다른 비 파일 항목이거나 더는 존재하지 않으면False를 반환합니다.결과는
os.DirEntry객체에 캐시 됩니다. 캐싱, 시스템 호출, 예외 발생은is_dir()과 같습니다.
- is_symlink()¶
이 항목이 심볼릭 링크면 (망가졌다 하더라도)
True를 반환합니다; 항목이 디렉터리 나 어떤 종류의 파일이거나 더는 존재하지 않으면False를 반환합니다.결과는
os.DirEntry객체에 캐시 됩니다. 최신 정보를 가져오려면os.path.islink()를 호출하십시오.첫 번째, 캐시 되지 않은 호출에서는 시스템 호출이 필요하지 않습니다. 특히 윈도우 나 유닉스는
dirent.d_type == DT_UNKNOWN를 반환하는 특정 유닉스 파일 시스템 (예 : 네트워크 파일 시스템)을 제외하고는 시스템 호출이 필요하지 않습니다.이 메서드는,
PermissionError와 같은,OSError를 발생시킬 수 있지만,FileNotFoundError는 잡혀서 발생하지 않습니다.
- is_junction()¶
이 항목이 결합(junction)인 경우(끊어진 경우라도)
True를 반환합니다. 항목이 일반 디렉터리나 어떤 종류의 파일, 심볼릭 링크를 가리키거나 더 이상 존재하지 않는 경우에는False를 반환합니다.결과는
os.DirEntry객체에 캐시됩니다. 최신 정보를 가져오려면os.path.isjunction()을 호출하십시오.Added in version 3.12.
- stat(*, follow_symlinks=True)¶
이 항목의
stat_result객체를 돌려줍니다. 이 메서드는 기본적으로 심볼릭 링크를 따릅니다; 심볼릭 링크를 stat 하려면,follow_symlinks=False인자를 추가하십시오.유닉스에서, 이 메서드는 항상 시스템 호출을 요구합니다. 윈도우에서, follow_symlinks 가
True이고 항목이 재해석 지점(reparse point, 예를 들어, 심볼릭 링크나 디렉터리 정션(directory junction))일 때만 시스템 호출이 필요합니다.윈도우에서,
stat_result의st_ino,st_dev및st_nlink어트리뷰트는 항상 0으로 설정됩니다. 이러한 어트리뷰트를 얻으려면os.stat()을 호출하십시오.결과는 follow_symlinks 가
True및False일 때에 대해 별도로os.DirEntry객체에 캐시 됩니다. 최신 정보를 가져오려면,os.stat()을 호출하십시오.
os.DirEntry와pathlib.Path의 여러 속성과 메서드 사이에 대응 관계가 있음에 유의하십시오. 특히,name속성은is_dir(),is_file(),is_symlink(),is_junction()및stat()메서드와 동일한 의미를 갖습니다.Added in version 3.5.
버전 3.12에서 변경: stat 결과의
st_ctime속성은 Windows에서 더 이상 사용되지 않습니다(deprecated). 파일 생성 시간은st_birthtime으로 적절하게 제공되며, 향후st_ctime은 사용 가능한 경우 0 또는 메타데이터 변경 시간을 반환하도록 변경될 수 있습니다.
- os.stat(path, *, dir_fd=None, follow_symlinks=True)¶
파일 또는 파일 기술자의 상태를 가져옵니다. 주어진 경로에 대해
stat()시스템 호출과 같은 작업을 수행합니다. path 는 문자열이나 바이트열 – 직접 또는PathLike인터페이스를 통해 간접적으로 – 또는 열린 파일 기술자로 지정될 수 있습니다.stat_result객체를 반환합니다.이 함수는 일반적으로 심볼릭 링크를 따릅니다; 심볼릭 링크를 stat 하려면, 인자
follow_symlinks=False를 추가하거나lstat()를 사용하십시오.이 함수는 파일 기술자 지정 및 심볼릭 링크를 따르지 않음을 지원할 수 있습니다.
윈도우에서,
follow_symlinks=False를 전달하면 심볼릭 링크와 디렉터리 정션(directory junction)을 포함하는 모든 이름 서로게이트(name-surrogate) 재해석 지점(reparse point)을 따라가지 않습니다. 링크처럼 보이지 않거나 운영 체제에서 따라갈 수 없는 다른 유형의 재해석 지점은 직접 열립니다. 여러 링크 체인을 따라갈 때, 전체 탐색을 방해하는 비 링크 대신 원래 링크가 반환될 수 있습니다. 이 경우 최종 경로에 대한 stat 결과를 얻으려면,os.path.realpath()함수를 사용하여 가능한 한 멀리 간 경로 이름을 확인한 다음 드 결과에 대해lstat()을 호출하십시오. 매달린(dangling) 심볼릭 링크나 정션 지점에는 적용되지 않고, 일반적인 예외가 발생합니다.예:
>>> import os >>> statinfo = os.stat('somefile.txt') >>> statinfo os.stat_result(st_mode=33188, st_ino=7876932, st_dev=234881026, st_nlink=1, st_uid=501, st_gid=501, st_size=264, st_atime=1297230295, st_mtime=1297230027, st_ctime=1297230027) >>> statinfo.st_size 264
버전 3.3에서 변경: dir_fd 및 follow_symlinks 매개 변수가 추가되었으며, 경로 대신 파일 기술자를 지정합니다.
버전 3.6에서 변경: 경로류 객체를 받아들입니다.
버전 3.8에서 변경: 윈도우에서, 이제 운영 체제가 결정할 수 있는 모든 재해석 지점을 따라가고,
follow_symlinks=False를 전달하면 모든 이름 서로게이트 재해석 지점을 따라가지 않습니다. 운영 체제가 따라갈 수 없는 재해석 지점에 도달하면, stat은 이제 에러를 발생시키는 대신follow_symlinks=False가 지정된 것처럼 원래 경로에 대한 정보를 반환합니다.
- class os.stat_result¶
속성이
stat구조체의 멤버와 대략적으로 대응하는 객체입니다.os.stat(),os.fstat()및os.lstat()의 결과에 사용됩니다.어트리뷰트:
- st_mode¶
파일 모드: 파일 유형 및 파일 모드 비트 (사용 권한).
- st_dev¶
이 파일이 있는 장치의 식별자.
- st_nlink¶
하드 링크 수.
- st_uid¶
파일 소유자의 사용자 식별자.
- st_gid¶
파일 소유자의 그룹 식별자.
- st_size¶
일반 파일 또는 심볼릭 링크면, 바이트 단위의 파일의 크기. 심볼릭 링크의 크기는 포함하고 있는 경로명의 길이이며, 끝나는 널 바이트는 포함하지 않습니다.
타임스탬프:
- st_atime¶
초 단위의 가장 최근의 액세스 시간.
- st_mtime¶
초 단위의 가장 최근의 내용 수정 시간.
- st_ctime¶
초 단위로 표현된 가장 최근의 메타데이터 변경 시간입니다.
버전 3.12에서 변경:
st_ctime은 Windows에서 더 이상 사용되지 않습니다. 파일 생성 시간은st_birthtime을 사용하십시오. 향후st_ctime은 다른 플랫폼과 마찬가지로 가장 최근의 메타데이터 변경 시간을 포함하게 됩니다.
- st_atime_ns¶
나노초 정수 단위의 가장 최근의 액세스 시간.
Added in version 3.3.
- st_mtime_ns¶
나노초 정수 단위의 가장 최근의 내용 수정 시간.
Added in version 3.3.
- st_ctime_ns¶
정수 형태의 나노초 단위로 표현된 가장 최근의 메타데이터 변경 시간입니다.
Added in version 3.3.
버전 3.12에서 변경: 윈도우에서
st_ctime_ns는 더 이상 사용되지 않습니다. 파일 생성 시간을 확인하려면st_birthtime_ns를 사용하십시오. 향후st_ctime은 다른 플랫폼과 마찬가지로 가장 최근에 변경된 메타데이터의 시간을 포함하게 됩니다.
- st_birthtime¶
초 단위로 표현된 파일 생성 시간입니다. 이 속성은 항상 사용할 수 있는 것은 아니며,
AttributeError를 발생시킬 수 있습니다.버전 3.12에서 변경: 이제 Windows에서
st_birthtime을 사용할 수 있습니다.
- st_birthtime_ns¶
Time of file creation expressed in nanoseconds as an integer. This attribute is not always available, and may raise
AttributeError.Added in version 3.12.
참고
st_atime,st_mtime,st_ctime및st_birthtime속성의 정확한 의미와 해상도는 운영 체제와 파일 시스템에 따라 다릅니다. 예를 들어, FAT32 파일 시스템을 사용하는 Windows 시스템에서st_mtime은 2초 해상도를 가지며,st_atime은 단 1일의 해상도만 가집니다. 자세한 내용은 운영 체제 문서를 참조하십시오.마찬가지로,
st_atime_ns,st_mtime_ns,st_ctime_ns및st_birthtime_ns는 항상 나노초 단위로 표현되지만, 많은 시스템에서 나노초 수준의 정밀도를 제공하지 않습니다. 나노초 정밀도를 제공하는 시스템에서도st_atime,st_mtime,st_ctime및st_birthtime을 저장하는 데 사용되는 부동 소수점 숫자는 모든 정보를 보존할 수 없으므로 약간의 오차가 있을 수 있습니다. 정확한 타임스탬프가 필요한 경우에는 항상st_atime_ns,st_mtime_ns,st_ctime_ns및st_birthtime_ns를 사용해야 합니다.(리눅스와 같은) 일부 유닉스 시스템에서는, 다음 어트리뷰트도 사용할 수 있습니다:
- st_blksize¶
효율적인 파일 시스템 I/O를 위해 “선호되는” 블록 크기. 더 작은 크기로 파일에 기록하면 비효율적인 읽기-수정-다시 쓰기가 발생할 수 있습니다.
- st_rdev¶
아이노드 장치면 장치 유형.
- st_flags¶
파일에 대한 사용자 정의 플래그.
(FreeBSD와 같은) 다른 유닉스 시스템에서는, 다음 어트리뷰트를 사용할 수 있습니다 (그러나 root가 사용하려고 할 때만 채워질 수 있습니다):
- st_gen¶
파일 생성 번호.
Solaris 및 파생 상품에서, 다음 어트리뷰트도 사용할 수 있습니다:
- st_fstype¶
파일을 포함하는 파일 시스템의 유형을 고유하게 식별하는 문자열.
macOS 시스템에서는 다음 속성들도 사용할 수 있습니다:
- st_rsize¶
파일의 실제 크기.
- st_creator¶
파일의 생성자.
- st_type¶
파일 유형.
윈도우 시스템에서는, 다음 어트리뷰트도 사용할 수 있습니다:
- st_file_attributes¶
윈도우 파일 어트리뷰트:
GetFileInformationByHandle`이 반환하는 ``BY_HANDLE_FILE_INFORMATION`()구조체의dwFileAttributes멤버입니다.stat모듈의FILE_ATTRIBUTE_* <stat.FILE_ATTRIBUTE_ARCHIVE>상수를 참조하십시오.Added in version 3.5.
- st_reparse_tag¶
st_file_attributes에FILE_ATTRIBUTE_REPARSE_POINT가 설정된 경우, 이 필드는 리파스 포인트(reparse point)의 유형을 식별하는 태그를 포함합니다.stat모듈의IO_REPARSE_TAG_*상수를 참조하십시오.
The standard module
statdefines functions and constants that are useful for extracting information from astatstructure. (On Windows, some items are filled with dummy values.)하위 호환성을 위해,
stat_result인스턴스는 최소 10개의 정수로 구성된 튜플로도 접근할 수 있으며, 이는st_mode,st_ino,st_dev,st_nlink,st_uid,st_gid,st_size,st_atime,st_mtime,st_ctime순서로stat구조체의 가장 중요한(그리고 이식 가능한) 멤버들을 제공합니다. 일부 구현에 따라 끝에 더 많은 항목이 추가될 수 있습니다. 이전 버전의 파이썬과 호환되도록,stat_result를 튜플로 접근하면 항상 정수가 반환됩니다.버전 3.5에서 변경: 윈도우는 이제 사용 가능할 때 파일 인덱스를
st_ino로 반환합니다.버전 3.7에서 변경: Solaris/파생 제품에
st_fstype멤버를 추가했습니다.버전 3.8에서 변경: 윈도우에서
st_reparse_tag멤버를 추가했습니다.버전 3.12에서 변경: 윈도우에서
st_ctime은 더 이상 사용되지 않습니다. 향후 다른 플랫폼과의 일관성을 위해 마지막 메타데이터 변경 시간을 포함하게 되지만, 현재는 여전히 생성 시간을 포함합니다. 생성 시간을 확인하려면st_birthtime을 사용하십시오.윈도우에서
st_ino는 파일 시스템에 따라 최대 128비트까지일 수 있습니다. 이전에는 64비트를 초과하지 않았으며, 더 큰 파일 식별자는 임의로 패킹되었습니다.윈도우에서
st_rdev는 더 이상 값을 반환하지 않습니다. 이전에는st_dev와 동일한 값을 포함했으나 이는 잘못된 것이었습니다.윈도우에서
st_birthtime멤버를 추가했습니다.
- os.statx(path, mask, *, flags=0, dir_fd=None, follow_symlinks=True)¶
주어진 경로에 대해
statx()시스템 호출을 수행하여 파일 또는 파일 기술자의 상태를 가져옵니다.path 은(는) path-like object 또는 열린 파일 기술자입니다. mask 는 가져올 정보를 지정하는 모듈 수준의
STATX__*상수들의 조합입니다. flags 는 모듈 수준의AT_STATX_*상수의 조합 및/또는AT_NO_AUTOMOUNT입니다. 실제로 추출된 정보를 나타내는stx_mask어트리뷰트를 가진statx_result객체를 반환합니다(이 정보는 mask 와 다를 수 있습니다).이 함수는 파일 기술자 지정, 디렉터리 기술자에 상대적인 경로, 그리고 심볼릭 링크를 따르지 않음 을 지원합니다.
더 보기
statx(2) 매뉴얼 페이지.
가용성: Linux >= 4.11 with glibc >= 2.28.
Added in version 3.15.
- class os.statx_result¶
os.statx()에 의해 반환된 파일 정보입니다.statx_result은(는) 다음과 같은 어트리뷰스를 가집니다:- stx_atime¶
초 단위의 가장 최근의 액세스 시간.
stx_mask에STATX_ATIME이 없는 경우None과 같습니다.
- stx_atime_ns¶
나노초 정수 단위의 가장 최근의 액세스 시간.
stx_mask에STATX_ATIME이 없는 경우None과 같습니다.
- stx_atomic_write_segments_max¶
torn-write 보호가 있는 직접 I/O를 위한 최대 iovec 수입니다.
stx_mask에STATX_WRITE_ATOMIC이 없는 경우None과 같습니다.가용성: Linux >= 4.11 with glibc >= 2.28 and build-time kernel userspace API headers >= 6.11.
- stx_atomic_write_unit_max¶
torn-write 보호가 있는 직접 I/O를 위한 최대 크기입니다.
stx_mask에STATX_WRITE_ATOMIC이 없는 경우None과 같습니다.가용성: Linux >= 4.11 with glibc >= 2.28 and build-time kernel userspace API headers >= 6.11.
- stx_atomic_write_unit_max_opt¶
torn-write 보호가 있는 직접 I/O를 위한 최대 최적화 크기입니다.
stx_mask에STATX_WRITE_ATOMIC이 없는 경우None과 같습니다.가용성: Linux >= 4.11 with glibc >= 2.28 and build-time kernel userspace API headers >= 6.16.
- stx_atomic_write_unit_min¶
torn-write 보호가 있는 직접 I/O를 위한 최소 크기입니다.
stx_mask에STATX_WRITE_ATOMIC이 없는 경우None과 같습니다.가용성: Linux >= 4.11 with glibc >= 2.28 and build-time kernel userspace API headers >= 6.11.
- stx_attributes¶
이 파일의 어트리뷰트를 지정하는
STATX_ATTR_*상수의 비트마스크입니다.
- stx_attributes_mask¶
stx_attributes의 어떤 비트가 VFS 및 파일 시스템에서 지원되는지 나타내는 마스크입니다.
- stx_blksize¶
효율적인 파일 시스템 I/O를 위해 “선호되는” 블록 크기. 더 작은 크기로 파일에 기록하면 비효율적인 읽기-수정-다시 쓰기가 발생할 수 있습니다.
- stx_blocks¶
파일에 할당된 512바이트 블록 수입니다. 파일에 구멍(holes)이 있는 경우
stx_size/512보다 작을 수 있습니다.stx_mask에STATX_BLOCKS이 없는 경우None과 같습니다.
- stx_btime¶
초 단위로 표현된 파일 생성 시간입니다.
어트리뷰트
stx_mask에서STATX_BTIME이 누락된 경우None과 같습니다.
- stx_btime_ns¶
정수 형태의 나노초로 표현된 파일 생성 시간입니다.
어트리뷰트
stx_mask에서STATX_BTIME이 누락된 경우None과 같습니다.
- stx_ctime¶
초 단위로 표현된 가장 최근의 메타데이터 변경 시간입니다.
어트리뷰트
statx_result.stx_mask에서STATX_CTIME이 누락된 경우None과 같습니다.
- stx_ctime_ns¶
정수 형태의 나노초 단위로 표현된 가장 최근의 메타데이터 변경 시간입니다.
어트리뷰트
statx_result.stx_mask에서STATX_CTIME이 누락된 경우None과 같습니다.
- stx_dev¶
이 파일이 있는 장치의 식별자.
- stx_dev_major¶
이 파일이 위치한 장치의 주 번호입니다.
- stx_dev_minor¶
이 파일이 위치한 장치의 부 번호입니다.
- stx_dio_mem_align¶
직접 I/O(Direct I/O) 메모리 버퍼 정렬 요구 사항입니다.
어트리뷰트
stx_mask에서STATX_DIOALIGN이 누락된 경우None과 같습니다.가용성: Linux >= 4.11 with glibc >= 2.28 and build-time kernel userspace API headers >= 6.1.
- stx_dio_offset_align¶
직접 I/O(Direct I/O) 파일 오프셋 정렬 요구 사항입니다.
어트리뷰트
stx_mask에서STATX_DIOALIGN이 누락된 경우None과 같습니다.가용성: Linux >= 4.11 with glibc >= 2.28 and build-time kernel userspace API headers >= 6.1.
- stx_dio_read_offset_align¶
읽기 시 직접 I/O(Direct I/O) 파일 오프셋 정렬 요구 사항입니다.
어트리뷰트
stx_mask에서STATX_DIO_READ_ALIGN이 누락된 경우None과 같습니다.가용성: Linux >= 4.11 with glibc >= 2.28 and build-time kernel userspace API headers >= 6.14.
- stx_mnt_id¶
마운트 식별자입니다.
어트리뷰트
stx_mask에서STATX_MNT_ID이 누락된 경우None과 같습니다.가용성: Linux >= 4.11 with glibc >= 2.28 and build-time kernel userspace API headers >= 5.8.
- stx_mode¶
파일 모드: 파일 유형 및 파일 모드 비트 (사용 권한).
어트리뷰트
stx_mask에서STATX_TYPE | STATX_MODE이 누락된 경우None과 같습니다.
- stx_mtime¶
초 단위의 가장 최근의 내용 수정 시간.
어트리뷰트
stx_mask에서STATX_MTIME이 누락된 경우None과 같습니다.
- stx_mtime_ns¶
나노초 정수 단위의 가장 최근의 내용 수정 시간.
어트리뷰트
stx_mask에서STATX_MTIME이 누락된 경우None과 같습니다.
- stx_nlink¶
하드 링크 수.
어트리뷰트
stx_mask에서STATX_NLINK이 누락된 경우None과 같습니다.
- stx_rdev¶
아이노드 장치면 장치 유형.
- stx_rdev_major¶
이 파일이 나타내는 장치의 주 번호입니다.
- stx_rdev_minor¶
이 파일이 나타내는 장치의 부 번호입니다.
- stx_size¶
일반 파일 또는 심볼릭 링크면, 바이트 단위의 파일의 크기. 심볼릭 링크의 크기는 포함하고 있는 경로명의 길이이며, 끝나는 널 바이트는 포함하지 않습니다.
어트리뷰트
stx_mask에서STATX_SIZE이 누락된 경우None과 같습니다.
- stx_subvol¶
서브볼륨 식별자입니다.
어트리뷰트
stx_mask에서STATX_SUBVOL이 누락된 경우None과 같습니다.가용성: Linux >= 4.11 with glibc >= 2.28 and build-time kernel userspace API headers >= 6.10.
더 보기
statx(2) 매뉴얼 페이지.
가용성: Linux >= 4.11 with glibc >= 2.28.
Added in version 3.15.
- os.STATX_TYPE¶
- os.STATX_MODE¶
- os.STATX_NLINK¶
- os.STATX_UID¶
- os.STATX_GID¶
- os.STATX_ATIME¶
- os.STATX_MTIME¶
- os.STATX_CTIME¶
- os.STATX_INO¶
- os.STATX_SIZE¶
- os.STATX_BLOCKS¶
- os.STATX_BASIC_STATS¶
- os.STATX_BTIME¶
- os.STATX_MNT_ID¶
- os.STATX_DIOALIGN¶
- os.STATX_MNT_ID_UNIQUE¶
- os.STATX_SUBVOL¶
- os.STATX_WRITE_ATOMIC¶
- os.STATX_DIO_READ_ALIGN¶
os.statx()의 mask 매개 변수에서 사용하는 비트 플래그입니다. 이 플래그 중 일부는statx_result에 해당 항목이 없더라도 사용 가능할 수 있습니다.가용성: Linux >= 4.11 with glibc >= 2.28.
Added in version 3.15.
- os.AT_STATX_FORCE_SYNC¶
os.statx()함수를 위한 플래그입니다. 비용이 많이 드는 경우(예: 네트워크 파일 시스템의 파일에 대해 서버와 통신해야 하는 경우)에도 커널이 최신 정보를 반환하도록 요청합니다.가용성: Linux >= 4.11 with glibc >= 2.28.
Added in version 3.15.
- os.AT_STATX_DONT_SYNC¶
os.statx()함수를 위한 플래그입니다. 가능한 경우 커널이 캐시된 정보를 반환하도록 요청합니다.가용성: Linux >= 4.11 with glibc >= 2.28.
Added in version 3.15.
- os.AT_STATX_SYNC_AS_STAT¶
os.statx()함수를 위한 플래그입니다. 이 플래그는0으로 정의되어 있어 아무런 효과도 없지만,AT_STATX_FORCE_SYNC와AT_STATX_DONT_SYNC가 모두 전달되지 않음을 명시적으로 나타낼 때 사용될 수 있습니다. 다른 두 플래그가 없는 경우, 커널은 일반적으로os.stat()이 반환하는 것과 동일한 수준의 최신 정보를 반환합니다.가용성: Linux >= 4.11 with glibc >= 2.28.
Added in version 3.15.
- os.AT_NO_AUTOMOUNT¶
경로의 마지막 구성 요소가 자동 마운트 포인트인 경우, 자동 마운트를 수행하는 대신 해당 자동 마운트 포인트에 대해 작업을 수행합니다. Linux에서
os.stat(),os.fstat(),os.lstat()은 항상 이와 같이 동작합니다.가용성: Linux.
Added in version 3.15.
- os.statvfs(path)¶
주어진 경로에 대해 statvfs(3) 시스템 호출을 수행합니다. 반환 값은 해당 경로의 파일 시스템을 설명하는 속성을 가진
statvfs_result이며, 이는statvfs구조체의 멤버와 대응됩니다.이 함수는 파일 기술자 지정을 지원할 수 있습니다.
가용성: Unix.
버전 3.3에서 변경: path에 열린 파일 기술자를 지정하는 지원이 추가되었습니다.
버전 3.6에서 변경: 경로류 객체를 받아들입니다.
- class os.statvfs_result¶
os.statvfs()및os.fstatvfs()에 의해 반환되는 파일 시스템 통계입니다. 자세한 내용은 statvfs(3) 를 참조하십시오.- f_bsize¶
블록 크기입니다.
- f_frsize¶
프래그먼트 크기입니다.
- f_bfree¶
사용 가능한(여유) 블록 수입니다.
- f_bavail¶
일반 사용자가 사용할 수 있는 여유 블록 수입니다.
- f_files¶
파일 시스템이 포함할 수 있는 파일 항목 및 아이노드(inode)의 총 개수입니다.
- f_ffree¶
여유가 있는 파일 항목의 수입니다.
- f_favail¶
일반 사용자가 사용할 수 있는 여유 파일 항목의 수입니다.
- f_flag¶
마운트 플래그의 비트마스크입니다. 다음과 같은 플래그가 정의되어 있습니다:
ST_RDONLY,ST_NOSUID,ST_NODEV,ST_NOEXEC,ST_SYNCHRONOUS,ST_MANDLOCK,ST_WRITE,ST_APPEND,ST_IMMUTABLE,ST_NOATIME,ST_NODIRATIME, 및ST_RELATIME.
- f_namemax¶
파일 시스템의 최대 파일 이름 길이입니다. Windows MAX_PATH 및 Linux pathname(7) 에 설명된 것과 같은 OS별 제한이 존재할 수 있습니다.
- f_fsid¶
파일 시스템 ID입니다.
Added in version 3.7.
다음 플래그가 statvfs_result.f_flag 에서 사용됩니다.
- os.ST_RDONLY¶
읽기 전용 파일 시스템입니다.
Added in version 3.2.
- os.ST_NOSUID¶
setuid/setgid 비트가 비활성화되었거나 지원되지 않습니다.
Added in version 3.2.
- os.supports_dir_fd¶
os모듈의 어떤 함수가 dir_fd 매개 변수로 열린 파일 기술자를 받아들이는지를 나타내는set객체입니다. 플랫폼마다 다른 기능을 제공하며, 파이썬이 dir_fd 매개 변수를 구현하는 데 사용하는 하부 기능이 파이썬이 지원하는 모든 플랫폼에서 사용 가능하지 않습니다. 일관성을 위해, dir_fd 를 지원할 수도 있는 함수는 항상 이 매개 변수를 지정할 수 있도록 하지만, 로컬에서 사용 불가능한 경우 기능을 사용하면 예외가 발생합니다. (dir_fd 에None을 지정하는 것은 모든 플랫폼에서 항상 지원됩니다.)특정 함수가 dir_fd 매개 변수로 열린 파일 기술자를 받아들이는지 확인하려면,
supports_dir_fd에in연산자를 사용하십시오. 예를 들어, 이 표현식은 로컬 플랫폼에서os.stat()이 dir_fd 매개 변수로 열린 파일 기술자를 받아들이면True로 평가됩니다:os.supports_dir_fd 내의 os.stat
현재 dir_fd 매개 변수는 유닉스 플랫폼에서만 작동합니다; 어느 것도 윈도우에서 작동하지 않습니다.
Added in version 3.3.
- os.supports_effective_ids¶
os.access()가 로컬 플랫폼에서 effective_ids 매개 변수에True를 지정하는 것을 허용하는지를 나타내는set객체. (effective_ids에False를 지정하는 것은 모든 플랫폼에서 항상 지원됩니다.) 로컬 플랫폼이 지원하면, 컬렉션에os.access()가 포함됩니다; 그렇지 않으면 비어있게 됩니다.이 표현식은 로컬 플랫폼에서
os.access()가effective_ids=True를 지원하면True로 평가됩니다:os.supports_effective_ids 내의 os.access
현재 effective_ids 는 유닉스 플랫폼에서만 지원됩니다; 윈도우에서는 작동하지 않습니다.
Added in version 3.3.
- os.supports_fd¶
os모듈의 어떤 함수가 로컬 플랫폼에서 자신의 path 매개 변수로 열린 파일 기술자를 지정하는 것을 허용하는지를 나타내는set객체입니다. 플랫폼마다 다른 기능을 제공하며, 파이썬이 path 로 열린 파일 기술자를 받아들이는 데 사용하는 하부 기능이 파이썬이 지원하는 모든 플랫폼에서 사용 가능하지 않습니다.특정 함수가 path 매개 변수에 열린 파일 기술자를 지정할 수 있도록 허용하는지를 판단하려면,
supports_fd에in연산자를 사용하십시오. 예를 들어, 이 표현식은 로컬 플랫폼에서os.chdir()가 path로 열린 파일 기술자를 받아들이면True로 평가됩니다:os.supports_fd 내의 os.chdir
Added in version 3.3.
- os.supports_follow_symlinks¶
os모듈의 어떤 함수가 로컬 플랫폼에서 follow_symlinks 매개 변수로False를 받아들이는지를 나타내는set객체입니다. 플랫폼마다 다른 기능을 제공하며, 파이썬이 follow_symlinks 를 구현하는 데 사용하는 하부 기능이 파이썬이 지원하는 모든 플랫폼에서 사용 가능하지 않습니다. 일관성을 위해, follow_symlinks 를 지원할 수도 있는 함수는 항상 이 매개 변수를 지정할 수 있도록 하지만, 로컬에서 사용 불가능한 경우 기능을 사용하면 예외가 발생합니다. (follow_symlinks 에True을 지정하는 것은 모든 플랫폼에서 항상 지원됩니다.)특정 함수가 follow_symlinks 매개 변수로
False를 받아들이는지 확인하려면,supports_follow_symlinks에in연산자를 사용하십시오. 예를 들어, 이 표현식은 로컬 플랫폼에서os.stat()을 호출할 때follow_symlinks=False를 지정할 수 있으면True로 평가됩니다:os.supports_follow_symlinks 내의 os.stat
Added in version 3.3.
- os.symlink(src, dst, target_is_directory=False, *, dir_fd=None)¶
src를 가리키는 dst 라는 이름의 심볼릭 링크를 만듭니다.
src 매개 변수는 링크의 대상(링크되는 파일 또는 디렉터리)을 의미하며, dst 는 생성될 링크의 이름입니다.
윈도우에서, 심볼릭 링크는 파일이나 디렉터리를 나타내며, 동적으로 대상에 맞춰 변형되지 않습니다. 대상이 있으면, 일치하도록 심볼릭 링크의 유형이 만들어집니다. 그렇지 않으면, target_is_directory 가
True면 심볼릭 링크가 디렉터리로 만들어지고, 그렇지 않으면 파일 심볼릭 링크(기본값)가 만들어집니다. 비 윈도우 플랫폼에서는 target_is_directory 가 무시됩니다.이 함수는 디렉터리 기술자에 상대적인 경로를 지원할 수 있습니다.
참고
최신 버전의 윈도우 10에서, 개발자 모드가 활성화되면, 권한이 없는 계정이 심볼릭 링크를 만들 수 있습니다. 개발자 모드를 사용할 수 없거나 활성화되어 있지 않으면, SeCreateSymbolicLinkPrivilege 권한이 필요하거나, 프로세스를 관리자로 실행해야 합니다.
권한이 없는 사용자가 함수를 호출하면
OSError가 발생합니다.src,dst,dir_fd를 인자로 감사 이벤트(auditing event)os.symlink를 발생시킵니다.버전 3.2에서 변경: 윈도우 6.0 (Vista) 심볼릭 링크에 대한 지원이 추가되었습니다.
버전 3.3에서 변경: dir_fd 매개 변수가 추가되었으며, 이제 Windows가 아닌 플랫폼에서 target_is_directory 를 허용합니다.
버전 3.6에서 변경: src 및 dst로 경로류 객체를 받아들입니다.
버전 3.8에서 변경: 개발자 모드가 있는 윈도우에서 권한 상승 없는(unelevated) 심볼릭 링크에 대한 지원이 추가되었습니다.
- os.truncate(path, length)¶
최대 length 바이트가 되도록 path에 해당하는 파일을 자릅니다.
이 함수는 파일 기술자 지정을 지원할 수 있습니다.
path,length를 인자로 감사 이벤트(auditing event)os.truncate를 발생시킵니다.가용성: Unix, Windows.
Added in version 3.3.
버전 3.5에서 변경: 윈도우 지원 추가
버전 3.6에서 변경: 경로류 객체를 받아들입니다.
- os.unlink(path, *, dir_fd=None)¶
파일 path를 제거(삭제)합니다. 이 함수는 의미상
remove()와 같습니다;unlink라는 이름은 전통적인 유닉스 이름입니다. 자세한 내용은remove()설명서를 참조하십시오.path,dir_fd를 인자로 감사 이벤트(auditing event)os.remove를 발생시킵니다.버전 3.3에서 변경: dir_fd 매개 변수가 추가되었습니다.
버전 3.6에서 변경: 경로류 객체를 받아들입니다.
- os.utime(path, times=None, *, [ns, ]dir_fd=None, follow_symlinks=True)¶
path로 지정된 파일의 액세스 및 수정 시간을 설정합니다.
utime()은 times 과 ns 라는 두 개의 선택적 매개 변수를 취합니다. path에 설정할 시간을 지정하며 다음과 같이 사용됩니다:ns 가 지정되면,
(atime_ns, mtime_ns)형식의 2-튜플이어야 하며, 각 멤버는 나노초를 나타내는 int입니다.times 가
None이 아니면, 각 멤버가 나노초 단위로 반올림된 초를 나타내는 실수 형태의 2-튜플인(atime, mtime)이어야 합니다.times 가
None이고 ns 가 지정되지 않으면,ns=(atime_ns, mtime_ns)를 지정하는 것과 같은데, 두 시간 모두 현재 시각입니다.
times 와 ns에 모두 튜플을 지정하는 것은 에러입니다.
운영 체제가 접근 및 수정 시간을 기록하는 정밀도에 따라 여기서 설정한 정확한 시간이 이후의
stat()호출에서 반환되지 않을 수 있으므로stat()을 참조하십시오. 정확한 시간을 유지하는 가장 좋은 방법은utime()을 사용할 때 ns 매개 변수와 함께os.stat()결과 객체의 st_atime_ns 및 st_mtime_ns 필드를 사용하는 것입니다.이 함수는 파일 기술자 지정, 디렉터리 기술자에 상대적인 경로 및 심볼릭 링크를 따르지 않음을 지원할 수 있습니다.
path,times,ns,dir_fd를 인자로 감사 이벤트(auditing event)os.utime을 발생시킵니다.버전 3.3에서 변경: path에 열린 파일 기술자를 지정하는 것과 dir_fd , follow_symlinks 및 ns 매개 변수 지원이 추가되었습니다.
버전 3.6에서 변경: 경로류 객체를 받아들입니다.
버전 3.15에서 변경: 정수나 부동 소수점뿐만 아니라 모든 실수를 times 로 수용합니다.
- os.walk(top, topdown=True, onerror=None, followlinks=False)¶
트리를 하향식 또는 상향식으로 탐색하여 디렉터리 트리에 있는 파일명을 생성합니다. 디렉터리 top을 루트로 하는 트리의 디렉터리(top 자체를 포함합니다)마다, 3-튜플
(dirpath, dirnames, filenames)를 산출합니다.dirpath*은 디렉터리 경로를 나타내는 문자열입니다. *dirnames*는 *dirpath 내의 하위 디렉터리 이름 목록(디렉터리로 연결되는 심볼릭 링크 포함,
'.'및'..'제외)이며, filenames*는 *dirpath 내의 파일 이름 목록입니다. 리스트에 포함된 이름에는 경로 구성 요소가 포함되지 않습니다. dirpath 내에 있는 파일이나 디렉터리의 전체 경로( top*으로 시작)를 얻으려면 ``os.path.join(dirpath, name)``을 사용하십시오. 리스트의 정렬 여부는 파일 시스템에 따라 다릅니다. 리스트 생성 중에 *dirpath 디렉터리에서 파일이 제거되거나 추가되는 경우 해당 파일의 이름이 포함될지 여부는 정의되지 않습니다.선택적 인자 topdown 이
True이거나 지정되지 않으면, 디렉터리에 대한 3-튜플은 하위 디렉터리에 대한 3-튜플이 생성되기 전에 생성됩니다 (디렉터리는 하향식으로 생성됩니다). topdown 이False면, 모든 하위 디렉터리에 대한 3-튜플 다음에 디렉터리에 대한 3-튜플이 생성됩니다 (디렉터리가 상향식으로 생성됨). topdown 의 값에 상관없이, 디렉터리와 해당 하위 디렉터리의 튜플이 생성되기 전에 하위 디렉터리 목록이 조회됩니다.topdown 이
True일 때, 호출자는 (아마도del또는 슬라이스 대입을 사용하여) dirnames 리스트를 수정할 수 있으며,walk()는 이름이 dirnames 남아있는 하위 디렉터리로만 재귀합니다; 검색을 가지치기하거나, 특정 방문 순서를 지정하거나, 심지어walk()가 다시 시작하기 전에 호출자가 새로 만들거나 이름을 바꾼 디렉터리에 대해walk()에 알릴 때도 사용할 수 있습니다. topdown 이False일 때 dirnames를 수정하는 것은 walk의 동작에 영향을 주지 못하는데, 상향식 모드에서 dirnames의 디렉터리는 dirpath 자체가 생성되기 전에 생성되기 때문입니다.기본적으로,
scandir()호출의 에러는 무시됩니다. 선택적 인자 onerror 가 지정되면, 함수여야 합니다; 하나의 인자OSError인스턴스로 호출됩니다. 에러를 보고하고 walk를 계속하도록 하거나, 예외를 발생시켜 walk를 중단할 수 있습니다. 파일명은 예외 객체의filename어트리뷰트로 제공됩니다.기본적으로,
walk()는 디렉터리로 해석되는 심볼릭 링크로 이동하지 않습니다. 지원하는 시스템에서, 심볼릭 링크가 가리키는 디렉터리를 방문하려면, followlinks를True로 설정하십시오.참고
심볼릭 링크가 자신의 부모 디렉터리를 가리킬 때, followlinks를
True로 설정하면 무한 재귀가 발생할 수 있음에 주의해야 합니다.walk()는 이미 방문한 디렉터리를 추적하지 않습니다.참고
상대 경로명을 전달할 때는,
walk()가 실행되는 도중 현재 작업 디렉터리를 변경하지 마십시오.walk()는 현재 디렉터리를 절대로 변경하지 않으며, 호출자도 마찬가지라고 가정합니다.이 예제는 시작 디렉터리 아래의 각 디렉터리에 있는 비디렉터리 파일이 차지하는 바이트 수를 표시하며, 단
__pycache__하위 디렉터리는 제외합니다.import os from os.path import join, getsize for root, dirs, files in os.walk('python/Lib/xml'): print(root, "consumes", end=" ") print(sum(getsize(join(root, name)) for name in files), end=" ") print("bytes in", len(files), "non-directory files") if '__pycache__' in dirs: dirs.remove('__pycache__') # don't visit __pycache__ directories
다음 예(
shutil.rmtree()의 간단한 구현)에서는, 트리를 상향식으로 탐색하는 것이 필수적입니다,rmdir()는 비어 있지 않은 디렉터리를 삭제할 수 없습니다:_# "top"에 명명된 디렉터리에서 접근 가능한 모든 것을 삭제합니다. # 심볼릭 링크가 없다고 가정합니다. # 주의: 이는 위험합니다! 예를 들어 top이 '/'인 경우, # 디스크의 모든 파일을 삭제할 수 있습니다. import os for root, dirs, files in os.walk(top, topdown=False): for name in files: os.remove(os.path.join(root, name)) for name in dirs: os.rmdir(os.path.join(root, name)) os.rmdir(top)
top,topdown,onerror,followlinks를 인자로 감사 이벤트(auditing event)os.walk를 발생시킵니다.버전 3.5에서 변경: 이 함수는 이제
os.listdir()대신os.scandir()를 호출하기 때문에,os.stat()호출 수를 줄여 더 빨라졌습니다.버전 3.6에서 변경: 경로류 객체를 받아들입니다.
- os.fwalk(top='.', topdown=True, onerror=None, *, follow_symlinks=False, dir_fd=None)¶
이 함수는
walk()와 똑같이 동작합니다. 단, 4-튜플(dirpath, dirnames, filenames, dirfd)를 산출하고dir_fd를 지원합니다.dirpath , dirnames 및 filenames 은
walk()출력과 같고, dirfd 는 dirpath 디렉터리를 가리키는 파일 기술자입니다.이 함수는 항상 디렉터리 기술자에 상대적인 경로 및 심볼릭 링크를 따르지 않음을 지원합니다. 하지만, 다른 함수와는 달리, follow_symlinks에 대한
fwalk()의 기본값은False임에 주의하십시오.이 예제는 시작 디렉터리 아래의 각 디렉터리에 있는 비디렉터리 파일이 차지하는 바이트 수를 표시하며, 단
__pycache__하위 디렉터리는 제외합니다.import os for root, dirs, files, rootfd in os.fwalk('python/Lib/xml'): print(root, "consumes", end=" ") print(sum([os.stat(name, dir_fd=rootfd).st_size for name in files]), end=" ") print("bytes in", len(files), "non-directory files") if '__pycache__' in dirs: dirs.remove('__pycache__') # don't visit __pycache__ directories
다음 예에서는, 트리를 상향식으로 탐색하는 것이 필수적입니다:
rmdir()는 비어 있지 않은 디렉터리를 삭제할 수 없습니다:"top"에 지정된 디렉터리에서 접근 가능한 모든 항목을 삭제하며, 심볼릭 링크가 없다고 가정합니다. # 주의: 이 작업은 위험합니다! 예를 들어, top이 '/'인 경우 모든 디스크 파일을 삭제할 수 있습니다. import os for root, dirs, files, rootfd in os.fwalk(top, topdown=False): for name in files: os.unlink(name, dir_fd=rootfd) for name in dirs: os.rmdir(name, dir_fd=rootfd)
top,topdown,onerror,follow_symlinks,dir_fd를 인자로 감사 이벤트(auditing event)os.fwalk를 발생시킵니다.가용성: Unix.
Added in version 3.3.
버전 3.6에서 변경: 경로류 객체를 받아들입니다.
버전 3.7에서 변경:
bytes경로에 대한 지원이 추가되었습니다.
- os.memfd_create(name[, flags=os.MFD_CLOEXEC])¶
익명 파일을 만들고 이를 가리키는 파일 기술자를 반환합니다. flags는 시스템에서 사용할 수 있는
os.MFD_*상수(또는 이들의 비트별 OR 조합) 중 하나여야 합니다. 기본적으로, 새 파일 기술자는 상속 불가능합니다.name에 제공된 이름은 파일명으로 사용되며 해당 심볼릭 링크의 대상으로
/proc/self/fd/디렉터리에 표시됩니다. 표시된 이름에는 항상memfd:접두어가 붙으며 디버깅 목적으로만 사용됩니다. 이름은 파일 기술자의 동작에 영향을 미치지 않고, 여러 파일이 부작용 없이 같은 이름을 가질 수 있습니다.가용성: Linux >= 3.17 with glibc >= 2.27.
Added in version 3.8.
- os.MFD_CLOEXEC¶
- os.MFD_ALLOW_SEALING¶
- os.MFD_HUGETLB¶
- os.MFD_HUGE_SHIFT¶
- os.MFD_HUGE_MASK¶
- os.MFD_HUGE_64KB¶
- os.MFD_HUGE_512KB¶
- os.MFD_HUGE_1MB¶
- os.MFD_HUGE_2MB¶
- os.MFD_HUGE_8MB¶
- os.MFD_HUGE_16MB¶
- os.MFD_HUGE_32MB¶
- os.MFD_HUGE_256MB¶
- os.MFD_HUGE_512MB¶
- os.MFD_HUGE_1GB¶
- os.MFD_HUGE_2GB¶
- os.MFD_HUGE_16GB¶
이 플래그들은
memfd_create()로 전달될 수 있습니다.가용성: Linux >= 3.17 with glibc >= 2.27
MFD_HUGE*플래그는 리눅스 4.14 버전부터 사용할 수 있습니다.Added in version 3.8.
- os.eventfd(initval[, flags=os.EFD_CLOEXEC])¶
이벤트 파일 기술자를 생성하고 반환합니다. 이 파일 기술자는 버퍼 크기가 8인 원시
read()및write(),select(),poll()등을 지원합니다. 자세한 내용은 매뉴얼 페이지 eventfd(2) 를 참조하십시오. 기본적으로 새 파일 기술자는 상속 불가능 입니다.initval 은 이벤트 카운터의 초기값입니다. 초기값은 반드시 32비트 부호 없는 정수여야 합니다. 이벤트 카운터가 최대값이 $2^{64}-2$인 부호 없는 64비트 정수임에도 불구하고, 초기값은 32비트 부호 없는 정수로 제한된다는 점에 유의하십시오.
flags 는
EFD_CLOEXEC,EFD_NONBLOCK, 그리고EFD_SEMAPHORE를 조합하여 구성할 수 있습니다.EFD_SEMAPHORE가 지정되고 이벤트 카운터가 0이 아닌 경우,eventfd_read()는 1을 반환하고 카운터를 1만큼 감소시킵니다.EFD_SEMAPHORE가 지정되지 않고 이벤트 카운터가 0이 아닌 경우,eventfd_read()는 현재 이벤트 카운터 값을 반환하고 카운터를 0으로 재설정합니다.이벤트 카운터가 0이고
EFD_NONBLOCK이 설정되지 않은 경우,eventfd_read()는 블록됩니다.eventfd_write()는 이벤트 카운터의 값을 증가시킵니다. 쓰기 작업으로 인해 카운트가 $2^{64}-2$보다 큰 값으로 증가하게 될 경우 쓰기 작업이 블록됩니다.예:
import os # semaphore with start value '1' fd = os.eventfd(1, os.EFD_SEMAPHORE | os.EFD_CLOEXEC) try: # acquire semaphore v = os.eventfd_read(fd) try: do_work() finally: # release semaphore os.eventfd_write(fd, v) finally: os.close(fd)
가용성: Linux >= 2.6.27 with glibc >= 2.8
Added in version 3.10.
- os.eventfd_read(fd)¶
eventfd()파일 기술자에서 값을 읽어 64비트 부호 없는 정수를 반환합니다. 이 함수는 fd 가eventfd()인지 확인하지 않습니다.가용성: Linux >= 2.6.27
Added in version 3.10.
- os.eventfd_write(fd, value)¶
eventfd()파일 기술자에 값을 추가합니다. value 는 64비트 부호 없는 정수여야 합니다. 이 함수는 fd 가eventfd()인지 확인하지 않습니다.가용성: Linux >= 2.6.27
Added in version 3.10.
- os.EFD_CLOEXEC¶
새
eventfd()파일 기술자에 대해 close-on-exec 플래그를 설정합니다.가용성: Linux >= 2.6.27
Added in version 3.10.
- os.EFD_NONBLOCK¶
새
eventfd()파일 기술자에 대해O_NONBLOCK상태 플래그를 설정합니다.가용성: Linux >= 2.6.27
Added in version 3.10.
- os.EFD_SEMAPHORE¶
eventfd()파일 기술자에서 읽을 때 세마포어와 유사한 동작을 제공합니다. 읽기 시 내부 카운터가 1씩 감소합니다.가용성: Linux >= 2.6.30
Added in version 3.10.
타이머 파일 기술자¶
Added in version 3.13.
이 함수들은 리눅스의 타이머 파일 기술자 API를 지원합니다. 당연히 이 기능들은 리눅스에서만 사용할 수 있습니다.
- os.timerfd_create(clockid, /, *, flags=0)¶
타이머 파일 기술자(timerfd)를 생성하고 반환합니다.
timerfd_create()에 의해 반환된 파일 기술자는 다음을 지원합니다:파일 기술자의
read()메서드는 버퍼 크기가 8인 상태에서 호출할 수 있습니다. 타이머가 이미 한 번 이상 만료된 경우,read()는 시스템 엔디안 방식에 따른 만료 횟수를 반환하며, 이는int.from_bytes(x, byteorder=sys.byteorder)를 통해int로 변환될 수 있습니다.select()및poll()을 사용하여 타이머가 만료되고 파일 기술자가 읽기 가능한 상태가 될 때까지 기다릴 수 있습니다.clockid 는
time모듈에 정의된 유효한 clock ID 여야 합니다:time.CLOCK_BOOTTIME(timerfd_create의 경우 리눅스 3.15부터 지원)
clockid 가
time.CLOCK_REALTIME인 경우, 설정 가능한 시스템 전체 실시간 시계(real-time clock)를 사용합니다. 시스템 시계가 변경되면 타이머 설정을 업데이트해야 합니다. 시스템 시계가 변경될 때 타이머를 취소하려면TFD_TIMER_CANCEL_ON_SET을 참조하십시오.clockid 가
time.CLOCK_MONOTONIC인 경우, 설정 불가능한 단조 증가 시계(monotonically increasing clock)를 사용합니다. 시스템 시계가 변경되어도 타이머 설정에 영향을 받지 않습니다.clockid 가
time.CLOCK_BOOTTIME인 경우, 시스템이 일시 중지된 시간을 포함한다는 점을 제외하고는time.CLOCK_MONOTONIC과 동일합니다.파일 기술자의 동작은 flags 값을 지정하여 변경할 수 있습니다. 다음 변수 중 어느 것이든 비트 논리합(bitwise OR,
|연산자)을 사용하여 결합하여 사용할 수 있습니다:TFD_NONBLOCK플래그가 설정되지 않은 경우,read()는 타이머가 만료될 때까지 블록됩니다. 이 플래그가 설정된 경우,read()는 블록되지 않지만 마지막 읽기 호출 이후 아직 만료가 발생하지 않았다면read()는errno가errno.EAGAIN으로 설정된OSError를 발생시킵니다.TFD_CLOEXEC은 파이썬에 의해 항상 자동으로 설정됩니다.파일 기술자가 더 이상 필요하지 않을 때는
os.close()를 사용하여 닫아야 합니다. 그렇지 않으면 파일 기술자가 누수(leak)될 수 있습니다.더 보기
timerfd_create(2) 매뉴얼 페이지.
가용성: Linux >= 2.6.27 with glibc >= 2.8
Added in version 3.13.
- os.timerfd_settime(fd, /, *, flags=flags, initial=0.0, interval=0.0)¶
타이머 파일 기술자의 내부 타이머를 변경합니다. 이 함수는
timerfd_settime_ns()와 동일한 간격 타이머를 작동시킵니다.fd 는 유효한 타이머 파일 기술자여야 합니다.
타이머의 동작은 flags 값을 지정하여 변경할 수 있습니다. 다음 변수 중 어느 것이든 비트 논리합(bitwise OR,
|연산자)을 사용하여 결합하여 사용할 수 있습니다:initial 을 0으로 설정하면 타이머가 비활성화됩니다. initial 이 0과 같거나 크면 타이머가 활성화됩니다. initial 이 0보다 작으면
errno가errno.EINVAL로 설정된OSError예외가 발생합니다.기본적으로 타이머는 initial 초가 경과하면 작동합니다. (initial 이 0인 경우, 타이머는 즉시 작동합니다.)
하지만
TFD_TIMER_ABSTIME플래그가 설정된 경우, 타이머는 해당 타이머의 시계(음의timerfd_create()에서 clockid 에 의해 설정됨)가 initial 초에 도달할 때 작동합니다.타이머의 간격은 실수형인 interval 에 의해 설정됩니다. interval 이 0이면 타이머는 최초 만료 시 한 번만 작동합니다. interval 이 0보다 크면 타이머는 이전 만료 이후 interval 초마다 작동합니다. interval 이 0보다 작으면
errno가errno.EINVAL으로 설정된OSError를 발생시킵니다.TFD_TIMER_CANCEL_ON_SET플래그와TFD_TIMER_ABSTIME이 함께 설정되고 이 타이머의 시계가time.CLOCK_REALTIME인 경우, 실시간 시계가 불연속적으로 변경되면 해당 타이머는 취소 가능 상태로 표시됩니다. 이때 기술자를 읽으려고 하면 ECANCELED 오류와 함께 중단됩니다.리눅스는 시스템 시계를 UTC로 관리합니다. 일광 절약 시간(Daylight Saving Time) 전환은 시간 오프셋만 변경하여 수행되므로 불연속적인 시스템 시계 변화를 일으키지 않습니다.
다음과 같은 이벤트에 의해 불연속적인 시스템 시계 변화가 발생할 수 있습니다:
settimeofdayclock_settimedate명령을 사용하여 시스템 날짜와 시간을 설정
이 함수가 실행되기 전 이전 타이머 상태로부터 (
next_expiration,interval)의 두 항목으로 구성된 튜플을 반환합니다.가용성: Linux >= 2.6.27 with glibc >= 2.8
Added in version 3.13.
- os.timerfd_settime_ns(fd, /, *, flags=0, initial=0, interval=0)¶
timerfd_settime()과 유사하지만 시간을 나노초 단위로 사용합니다. 이 함수는timerfd_settime()과 동일한 간격 타이머를 작동시킵니다.가용성: Linux >= 2.6.27 with glibc >= 2.8
Added in version 3.13.
- os.timerfd_gettime(fd, /)¶
(
next_expiration,interval)로 구성된 두 항목의 부동 소수점(float) 튜플을 반환합니다.next_expiration은TFD_TIMER_ABSTIME플래그 설정 여부와 관계없이 타이머가 다음에 작동할 때까지의 상대적인 시간을 나타냅니다.interval``은 타이머의 간격을 나타냅니다. 0인 경우, 타이머는 ``next_expiration초가 경과한 후 한 번만 작동합니다.더 보기
가용성: Linux >= 2.6.27 with glibc >= 2.8
Added in version 3.13.
- os.timerfd_gettime_ns(fd, /)¶
timerfd_gettime()과 유사하지만 시간을 나노초로 반환합니다.가용성: Linux >= 2.6.27 with glibc >= 2.8
Added in version 3.13.
- os.TFD_NONBLOCK¶
새 타이머 파일 기술자에 대해
O_NONBLOCK상태 플래그를 설정하는timerfd_create()함수의 플래그입니다.TFD_NONBLOCK이 설정되지 않은 경우,read()는 블록됩니다.가용성: Linux >= 2.6.27 with glibc >= 2.8
Added in version 3.13.
- os.TFD_CLOEXEC¶
timerfd_create()를 위한 플래그입니다.TFD_CLOEXEC가 설정된 경우, 새 파일 기술자에 대해 close-on-exec 플래그를 설정합니다.가용성: Linux >= 2.6.27 with glibc >= 2.8
Added in version 3.13.
- os.TFD_TIMER_ABSTIME¶
timerfd_settime()및timerfd_settime_ns()함수용 플래그입니다. 이 플래그가 설정되면 initial 은 타이머 시계(Unix Epoch 이후의 UTC 초 또는 나노초)에서의 절대값으로 해석됩니다.가용성: Linux >= 2.6.27 with glibc >= 2.8
Added in version 3.13.
- os.TFD_TIMER_CANCEL_ON_SET¶
TFD_TIMER_ABSTIME과 함께 사용하는timerfd_settime()및timerfd_settime_ns()함수용 플래그입니다. 기초가 되는 시계의 시간이 불연속적으로 변경되면 타이머가 취소됩니다.가용성: Linux >= 2.6.27 with glibc >= 2.8
Added in version 3.13.
리눅스 확장 어트리뷰트¶
Added in version 3.3.
이 함수들은 모두 리눅스에서만 사용 가능합니다.
- os.getxattr(path, attribute, *, follow_symlinks=True)¶
path의 확장 파일 시스템 어트리뷰트 attribute의 값을 반환합니다. attribute 는 bytes 또는 str(직접 또는
PathLike인터페이스를 통해 간접적으로)일 수 있습니다. str이면, 파일 시스템 인코딩으로 인코딩됩니다.이 함수는 파일 기술자 지정 및 심볼릭 링크를 따르지 않음을 지원할 수 있습니다.
path,attribute를 인자로 감사 이벤트(auditing event)os.getxattr을 발생시킵니다.버전 3.6에서 변경: path 및 attribute에 대해 경로류 객체를 받아들입니다.
- os.listxattr(path=None, *, follow_symlinks=True)¶
path 의 확장 파일 시스템 어트리뷰트 목록을 반환합니다. 목록의 어트리뷰트는 파일 시스템 인코딩으로 디코딩된 문자열로 표시됩니다. path 가
None이면,listxattr()는 현재 디렉터리를 검사합니다.이 함수는 파일 기술자 지정 및 심볼릭 링크를 따르지 않음을 지원할 수 있습니다.
path를 인자로 감사 이벤트(auditing event)os.listxattr을 발생시킵니다.버전 3.6에서 변경: 경로류 객체를 받아들입니다.
버전 3.15에서 변경:
os.listxattr(-1)은 이제 현재 디렉터리의 확장 속성을 나열하는 대신OSError(errno.EBADF)를 발생시킵니다.
- os.removexattr(path, attribute, *, follow_symlinks=True)¶
path 에서 확장 파일 시스템 속성 attribute 를 제거합니다. attribute 는 bytes 또는 str이어야 합니다 (직접 또는
PathLike인터페이스를 통해 간접적으로). 문자열인 경우, 이 값은 filesystem encoding and error handler 로 인코딩됩니다.이 함수는 파일 기술자 지정 및 심볼릭 링크를 따르지 않음을 지원할 수 있습니다.
path,attribute를 인자로 감사 이벤트(auditing event)os.removexattr을 발생시킵니다.버전 3.6에서 변경: path 및 attribute에 대해 경로류 객체를 받아들입니다.
- os.setxattr(path, attribute, value, flags=0, *, follow_symlinks=True)¶
path 의 확장 파일 시스템 속성 attribute 를 value 로 설정합니다. attribute 는 NULL이 포함되지 않은 bytes 또는 str이어야 합니다 (직접 또는
PathLike인터페이스를 통해 간접적으로). 문자열인 경우, 이 값은 filesystem encoding and error handler 로 인코딩됩니다. flags 는XATTR_REPLACE또는XATTR_CREATE일 수 있습니다.XATTR_REPLACE가 제공되었으나 속성이 존재하지 않는 경우ENODATA가 발생합니다.XATTR_CREATE가 제공되었고 이미 속성이 존재하는 경우, 속성이 생성되지 않고EEXISTS가 발생합니다.이 함수는 파일 기술자 지정 및 심볼릭 링크를 따르지 않음을 지원할 수 있습니다.
참고
리눅스 커널 버전 2.6.39 미만의 버그로 인해 flags 인자가 일부 파일 시스템에서 무시되었습니다.
path,attribute,value,flags를 인자로 감사 이벤트(auditing event)os.setxattr을 발생시킵니다.버전 3.6에서 변경: path 및 attribute에 대해 경로류 객체를 받아들입니다.
- os.XATTR_SIZE_MAX¶
확장 어트리뷰트 값의 최대 크기입니다. 현재, 리눅스에서 64 KiB입니다.
- os.XATTR_CREATE¶
이것은
setxattr()의 flags 인자를 위한 값입니다. 연산이 반드시 어트리뷰트를 새로 만들어야 함을 나타냅니다.
- os.XATTR_REPLACE¶
이것은
setxattr()의 flags 인자를 위한 값입니다. 연산이 반드시 기존 어트리뷰트를 대체해야 함을 나타냅니다.
프로세스 관리¶
이 함수들은 프로세스를 만들고 관리하는데 사용될 수 있습니다.
다양한 exec* 함수는 프로세스로 로드되는 새 프로그램에 대한 인자 목록을 받아들입니다. 각각의 경우에, 첫 번째 인자는 사용자가 명령 줄에 입력할 수 있는 인자가 아닌 프로그램 자체의 이름으로 새 프로그램에 전달됩니다. C 프로그래머에게, 이것은 프로그램의 main()에 전달된 argv[0]입니다. 예를 들어, os.execv('/bin/echo', ['foo', 'bar'])는 표준 출력에 bar만 인쇄합니다; foo는 무시되는 것처럼 보이게 됩니다.
- os.abort()¶
현재 프로세스에
SIGABRT시그널을 생성합니다. 유닉스에서, 기본 동작은 코어 덤프를 생성하는 것입니다; 윈도우에서, 프로세스는 즉시 종료 코드3\을 반환합니다. 이 함수를 호출하면signal.signal()\를 사용하여SIGABRT\에 등록된 파이썬 시그널 처리기를 호출하지 않게 됨에 주의하시기 바랍니다.
- os.add_dll_directory(path)¶
DLL 검색 경로에 path를 추가합니다.
이 검색 경로는 가져온 확장 모듈의 의존성을 해결할 때(모듈 자체는
sys.path를 통해 해결됨) 및ctypes에서 사용됩니다.반환된 객체의 close()를 호출하거나 반환된 객체를
with문에서 사용하여 디렉터리를 제거하십시오.DLL이 로드되는 방법에 대한 자세한 내용은 마이크로소프트 설명서를 참조하십시오.
path를 인자로 감사 이벤트(auditing event)os.add_dll_directory를 발생시킵니다.가용성: Windows.
Added in version 3.8: 이전 버전의 CPython은 현재 프로세스의 기본 동작을 사용하여 DLL을 해결(resolve)합니다. 이로 인해 때때로
PATH나 현재 작업 디렉터리를 검색하거나,AddDllDirectory와 같은 OS 함수가 효과가 없게 되는 것과 같은 일관성 없는 결과를 낳습니다.3.8에서는, 일관성을 보장하기 위해 이제 DLL이 로드되는 두 가지 기본 방법이 프로세스 전반의 동작을 명시적으로 재정의합니다. 라이브러리 갱신에 대한 정보는 이식 주의 사항을 참조하십시오.
- os.execl(path, arg0, arg1, ...)¶
- os.execle(path, arg0, arg1, ..., env)¶
- os.execlp(file, arg0, arg1, ...)¶
- os.execlpe(file, arg0, arg1, ..., env)¶
- os.execv(path, args)¶
- os.execve(path, args, env)¶
- os.execvp(file, args)¶
- os.execvpe(file, args, env)¶
이 함수들은 모두 현재 프로세스를 대체해서 새로운 프로그램을 실행합니다; 반환되지 않습니다. 유닉스에서, 새로운 실행 파일이 현재 프로세스에 로드되고, 호출자와 같은 프로세스 ID를 갖게 됩니다. 에러는
OSError예외로 보고됩니다.현재 프로세스가 즉시 교체됩니다. 열린 파일 객체와 기술자는 플러시(flush)되지 않으므로, 이러한 열린 파일에 버퍼링된 데이터가 있을 수 있는 경우
flush()또는os.fsync()를 사용하여 플러시한 후에exec*함수를 호출해야 합니다.exec*함수 중 “l”과 “v” 변형은 명령줄 인수가 전달되는 방식이 다릅니다. “l” 변형은 코드를 작성할 때 매개변수 수가 고정되어 있는 경우 다루기 가장 쉽습니다. 개별 매개변수가execl*()함수의 추가 매개변수가 되기 때문입니다. “v” 변형은 매개변수 수가 가변적인 경우에 유용하며, 인자가 args 매개변수로서 리스트나 튜플 형태로 전달됩니다. 두 경우 모두 자식 프로세스에 전달되는 인자는 실행되는 명령의 이름으로 시작해야 하지만, 이는 강제되지 않습니다.끝부분에 “p”가 포함된 변형(
execlp(),execlpe(),execvp(), 및execvpe())은 프로그램 file 을 찾기 위해PATH환경 변수를 사용합니다. 환경이 교체될 때(다음 단락에서 설명하는exec*e변형 중 하나를 사용하는 경우), 새 환경이PATH변수의 소스로 사용됩니다. 다른 변형인execl(),execle(),execv(), 및execve()는 실행 파일을 찾기 위해PATH변수를 사용하지 않으므로, path 에 적절한 절대 경로 또는 상대 경로가 포함되어야 합니다. 상대 경로는 Windows에서도 최소 하나의 슬래시(/)를 포함해야 하며, 그렇지 않으면 일반 이름으로는 해석되지 않습니다.execle(),execlpe(),execve(),execvpe()의 경우 (모두 “e”로 끝납니다), env 매개 변수는 새 프로세스의 환경 변수를 정의하는 데 사용되는 매핑이어야 합니다 (이것이 현재 프로세스의 환경 대신 사용됩니다); 함수execl(),execlp(),execv()및execvp()는 모두 새 프로세스가 현재 프로세스의 환경을 상속하게 합니다.일부 플랫폼에서
execve()의 경우, path 는 열린 파일 기술자로도 지정될 수 있습니다. 이 기능은 여러분의 플랫폼에서 지원되지 않을 수 있습니다;os.supports_fd를 사용하여 사용할 수 있는지를 확인할 수 있습니다. 사용할 수 없을 때, 이를 사용하면NotImplementedError가 발생합니다.path,args,env를 인자로 감사 이벤트(auditing event)os.exec를 발생시킵니다.가용성: Unix, Windows, not WASI, not Android, not iOS.
버전 3.3에서 변경:
execve()의 path에 열린 파일 기술자를 지정하는 지원이 추가되었습니다.버전 3.6에서 변경: 경로류 객체를 받아들입니다.
- os._exit(n)¶
상태 n으로 프로세스를 종료합니다. 클린업 처리기를 호출하거나, stdio 버퍼를 플러시 하거나 등등은 수행하지 않습니다.
참고
표준 종료 방식은
sys.exit(n) <sys.exit>`입니다. :func:()!_exit`는 일반적으로fork()이후의 자식 프로세스에서만 사용해야 합니다.
필수 조건은 아니지만, 다음 종료 코드가 정의되어 있으며 _exit()와 함께 사용할 수 있습니다. 이것은 메일 서버의 외부 명령 배달 프로그램과 같이 파이썬으로 작성된 시스템 프로그램에서 일반적으로 사용됩니다.
참고
약간의 차이점이 있어서, 이들 중 일부는 모든 유닉스 플랫폼에서 사용하지는 못할 수 있습니다. 이 상수는 하부 플랫폼에서 정의될 때만 정의됩니다.
- os.EX_OK¶
어떠한 오류도 발생하지 않았음을 의미하는 종료 코드입니다. 일부 플랫폼에서는
EXIT_SUCCESS의 정의된 값을 가져올 수 있습니다. 일반적으로 값은 0입니다.가용성: Unix, Windows.
- os.EX_TEMPFAIL¶
임시 에러가 발생했음을 나타내는 종료 코드. 이는 재시도 가능한 작업 중에 만들 수 없었던 네트워크 연결과 같이 실제로는 에러가 아닐 수 있는 것을 나타냅니다.
가용성: Unix, not WASI.
- os.fork()¶
자식 프로세스를 포크 합니다. 자식에서는
0을 반환하고, 부모에서는 자식의 프로세스 ID를 반환합니다. 에러가 발생하면OSError를 일으킵니다.FreeBSD <= 6.3 및 Cygwin을 포함한 일부 플랫폼은 스레드에서
fork()를 사용할 때 알려진 문제점이 있습니다.인자 없이 감사 이벤트(auditing event)
os.fork를 발생시킵니다.경고
fork()를 호출하는 애플리케이션에서 TLS 소켓을 사용하는 경우,ssl문서의 경고를 참조하십시오.경고
macOS에서 이 함수는 높은 수준의 시스템 API(예:
urllib.request포함)와 혼용하여 사용하는 경우 안전하지 않습니다.버전 3.8에서 변경: 서브 인터프리터에서
fork()를 호출하는 것은 더는 지원되지 않습니다 (RuntimeError가 발생합니다).버전 3.12에서 변경: If Python is able to detect that your process has multiple threads,
os.fork()now raises aDeprecationWarning.우리는 감지 가능한 경우 이를 경고로 표출하기로 결정했는데, 이는 POSIX 플랫폼이 명확하게 지원하지 않는다고 언급하는 설계상의 문제를 개발자에게 더 잘 알리기 위함입니다. 작동하는 것처럼 보이는 코드일지라도, POSIX 플랫폼에서 스레딩과
os.fork`를 혼합하여 사용하는 것은 결코 안전하지 않았습니다. CPython 런타임 자체도 부모 프로세스에 스레드가 존재할 때 자식 프로세스에서 사용하기에 안전하지 않은 API 호출(예: ``malloc`()및free)을 항상 수행해 왔기 때문입니다.macOS 사용자나 현재까지 glibc에서 흔히 발견되는 것 이외의 libc 또는 malloc 구현을 사용하는 사용자는 이러한 코드를 실행할 때 데드락(deadlock)이 발생할 가능성이 더 높습니다.
우리가 이 오래된 플랫폼 호환성 문제를 개발자들에게 알리는 기술적인 세부 사항은 이 fork가 스레드와 호환되지 않는다는 논의 를 참조하십시오.
가용성: POSIX, not WASI, not Android, not iOS.
- os.forkpty()¶
새 의사 터미널을 자식의 제어 터미널로 사용하여 자식 프로세스를 포크 합니다.
(pid, fd)쌍을 반환하는데, 여기서 pid 는 자식에서0이고, 부모에서는 새 자식의 프로세스 ID이고, fd 는 의사 터미널의 마스터 단의 파일 기술자입니다. 좀 더 이식성 있는 접근법을 사용하려면,pty모듈을 사용하십시오. 에러가 발생하면OSError를 일으킵니다.반환된 파일 기술자(file descriptor) fd 는 상속 불가능 입니다.
인자 없이 감사 이벤트(auditing event)
os.forkpty를 발생시킵니다.경고
macOS에서 이 함수는 높은 수준의 시스템 API(예:
urllib.request포함)와 혼용하여 사용하는 경우 안전하지 않습니다.버전 3.8에서 변경: 서브 인터프리터에서
forkpty()를 호출하는 것은 더는 지원되지 않습니다 (RuntimeError가 발생합니다).버전 3.12에서 변경: Python이 프로세스에 여러 스레드가 있음을 감지할 수 있는 경우, 이 함수는 이제
DeprecationWarning을 발생시킵니다.os.fork()에 대한 상세한 설명을 참조하십시오.버전 3.15에서 변경: 반환된 파일 기술자가 이제 상속 불가능하게 변경되었습니다.
가용성: Unix, not WASI, not Android, not iOS.
- os.kill(pid, sig, /)¶
프로세스 pid에 시그널 sig를 보냅니다. 호스트 플랫폼에서 사용할 수 있는 구체적인 시그널에 대한 상수는
signal모듈에 정의되어 있습니다.Windows:
signal.CTRL_C_EVENT및signal.CTRL_BREAK_EVENT시그널은 공통 콘솔 창을 공유하는 프로세스(예: 일부 서브프로세스)에만 보낼 수 있는 특별한 시그널입니다. sig 에 다른 값이 지정되면 TerminateProcess API에 의해 프로세스가 조건 없이 종료되며, 종료 코드는 sig 로 설정됩니다.signal.pthread_kill()도 참조하십시오.pid,sig를 인자로 감사 이벤트(auditing event)os.kill을 발생시킵니다.가용성: Unix, Windows, not WASI, not iOS.
버전 3.2에서 변경: 윈도우 지원이 추가되었습니다.
- os.killpg(pgid, sig, /)¶
시그널 sig 를 프로세스 그룹 pgid 로 보냅니다.
pgid,sig를 인자로 감사 이벤트(auditing event)os.killpg를 발생시킵니다.가용성: Unix, not WASI, not iOS.
- os.nice(increment, /)¶
프로세스의 “우선도(niceness)”에 increment 를 추가합니다. 새로운 우선도를 반환합니다.
가용성: Unix, not WASI.
- os.pidfd_open(pid, flags=0)¶
flags 가 설정된 프로세스 pid 를 가리키는 파일 기술자를 반환합니다. 이 기술자는 경쟁 상태나 시그널 없이 프로세스 관리를 수행하는 데 사용될 수 있습니다.
자세한 내용은 pidfd_open(2) 매뉴얼 페이지를 참조하십시오.
가용성: Linux >= 5.3, Android >=
build-timeAPI level 31Added in version 3.9.
- os.PIDFD_NONBLOCK¶
이 플래그는 파일 기술자가 비차단(non-blocking) 모드임을 나타냅니다. 파일 기술자가 가리키는 프로세스가 아직 종료되지 않은 경우, waitid(2) 를 사용하여 파일 기술자를 기다리려고 시도하면 차단되는 대신 즉시 에러인
EAGAIN을 반환합니다.
가용성: Linux >= 5.10
Added in version 3.12.
- os.pidfd_getfd(pidfd, targetfd, *, flags=0)¶
프로세스 파일 기술자 pidfd 가 가리키는 프로세스의 targetfd 를 호출하는 프로세스로 복제합니다. 반환된 파일 기술자는 상속 불가능 입니다.
flags 는 예약되어 있으며, 현재 반드시
0이어야 합니다.자세한 내용은 pidfd_getfd(2) 매뉴얼 페이지를 참조하십시오.
가용성: Linux >= 5.6, Android >=
build-timeAPI level 31Added in version 3.16.0a0 (unreleased).
- os.plock(op, /)¶
프로그램 세그먼트를 메모리에 잠급니다. (
<sys/lock.h>에서 정의된) op 값은 잠기는 세그먼트를 판별합니다.가용성: Unix, not WASI, not macOS, not iOS.
- os.popen(cmd, mode='r', buffering=-1)¶
명령 cmd*와 연결된 파이프를 엽니다. 반환값은 파이프에 연결된 열린 파일 객체이며, *mode*가 ``’r’``(기본값)인지 ``’w’``인 경우에 따라 읽거나 쓸 수 있습니다. *buffering 인자는 내장
open()함수에 대한 해당 인자와 동일한 의미를 가집니다. 반환된 파일 객체는 바이트가 아니라 텍스트 문자열을 읽거나 씁니다.close메서드는 자식 프로세스가 성공적으로 종료되면None을 반환하고, 에러가 있으면 자식 프로세스가 반환한 코드를 반환합니다. POSIX 시스템에서, 반환 코드가 양수면, 프로세스의 반환 값을 1바이트 왼쪽으로 시프트 한 값을 나타냅니다. 반환 코드가 음수면, 음의 반환 코드로 주어진 시그널에 의해 강제 종료된 것입니다. 예를 들어, 자식 프로세스가 죽었을(kill) 때 반환 값은- signal.SIGKILL일 수 있습니다. 윈도우 시스템에서, 반환 값은 자식 프로세스의 부호 있는 정수 반환 코드를 포함합니다.유닉스에서,
waitstatus_to_exitcode()는None이 아닐 때close메서드 결과(종료 상태)를 종료 코드로 변환하는 데 사용할 수 있습니다. 윈도우에서,close메서드 결과는 직접 종료 코드(또는None)입니다.이것은
subprocess.Popen를 사용하여 구현됩니다; 자식 프로세스를 관리하고 통신하는 보다 강력한 방법에 대해서는 이 클래스의 설명서를 참조하십시오.가용성: not WASI, not Android, not iOS.
참고
Python UTF-8 모드 가 cmd 및 파이프 내용에 사용되는 인코딩에 영향을 미칩니다.
popen()은subprocess.Popen의 단순한 래퍼입니다. 인코딩과 같은 옵션을 제어하려면subprocess.Popen이나subprocess.run()을 사용하십시오.버전 3.14부터 약하게 폐지 <Soft deprecated>: 대신에
subprocess모듈을 사용할 것을 권장합니다.
- os.posix_spawn(path, argv, env, *, file_actions=None, setpgroup=None, resetids=False, setsid=False, setsigmask=(), setsigdef=(), scheduler=None)¶
Python에서 사용할 수 있도록
posix_spawn()C 라이브러리 API를 래핑한 것입니다.대부분 사용자는
posix_spawn()대신subprocess.run()을 사용해야 합니다.위치 전용 인자 path, args, 그리고 env 는
execve()와 유사합니다. env 는None이 될 수 있으며, 이 경우 현재 프로세스의 환경이 사용됩니다.path 매개 변수는 실행 파일의 경로입니다. path에는 디렉터리가 있어야 합니다. 디렉터리 없이 실행 파일을 전달하려면
posix_spawnp()를 사용하십시오.file_actions 인자는 C 라이브러리 구현의
fork()와exec()단계 사이의 자식 프로세스에서 특정 파일 기술자에 취할 동작을 설명하는 튜플의 시퀀스 일 수 있습니다. 각 튜플의 첫 번째 항목은 나머지 튜플 요소를 설명하는, 아래에 나열된 세 가지 형 지시자 중 하나여야 합니다:- os.POSIX_SPAWN_OPEN¶
(
os.POSIX_SPAWN_OPEN, fd, path, flags, mode)os.dup2(os.open(path, flags, mode), fd)를 수행합니다.
- os.POSIX_SPAWN_CLOSE¶
(
os.POSIX_SPAWN_CLOSE, fd)os.close(fd)를 수행합니다.
- os.POSIX_SPAWN_DUP2¶
(
os.POSIX_SPAWN_DUP2, fd, new_fd)os.dup2(fd, new_fd)를 수행합니다.
- os.POSIX_SPAWN_CLOSEFROM¶
(
os.POSIX_SPAWN_CLOSEFROM, fd)os.closerange(fd, INF)를 수행합니다.
이 튜플들은
posix_spawn()호출을 준비하기 위해 사용되는 C 라이브러리의posix_spawn_file_actions_addopen(),posix_spawn_file_actions_addclose(),posix_spawn_file_actions_adddup2(), 그리고posix_spawn_file_actions_addclosefrom_np()API 호출에 대응합니다.setpgroup 인자는 자식의 프로세스 그룹을 지정된 값으로 설정합니다. 지정된 값이 0이면, 자식의 프로세스 그룹 ID는 자신의 프로세스 ID와 동일하게 됩니다. setpgroup 이 설정되지 않으면 자식은 부모의 프로세스 그룹 ID를 상속합니다. 이 인자는 C 라이브러리의
POSIX_SPAWN_SETPGROUP플래그에 해당합니다.resetids 인자가
True이면 자식의 유효(effective) UID 및 GID를 부모 프로세스의 실제(real) UID 및 GID로 재설정합니다. 인자가False인 경우, 자식은 부모의 유효 UID 및 GID를 유지합니다. 두 경우 모두 실행 파일에 set-user-ID 및 set-group-ID 권한 비트가 활성화되어 있으면 그 효과가 유효 UID 및 GID 설정보다 우선됩니다. 이 인자는 C 라이브러리의POSIX_SPAWN_RESETIDS플래그에 해당합니다.setsid 인자가
True이면posix_spawn을 위해 새로운 세션 ID를 생성합니다. setsid 는POSIX_SPAWN_SETSID또는POSIX_SPAWN_SETSID_NP플래그가 필요합니다. 그렇지 않으면NotImplementedError가 발생합니다.setsigmask 인자는 시그널 마스크를 지정된 시그널 세트로 설정합니다. 이 매개변수가 사용되지 않으면 자식은 부모의 시그널 마스크를 상속합니다. 이 인자는 C 라이브러리의
POSIX_SPAWN_SETSIGMASK플래그에 해당합니다.sigdef 인자는 지정된 세트에 포함된 모든 시그널의 처분(disposition)을 재설정합니다. 이 인자는 C 라이브러리의
POSIX_SPAWN_SETSIGDEF플래그에 해당합니다.scheduler 인자는 (선택적인) 스케줄러 정책과 스케줄링 매개 변수가 포함된
sched_param인스턴스를 포함하는 튜플이어야 합니다. 스케줄러 정책 자리에None이 오면 정책을 제공하지 않음을 의미합니다. 이 인자는 C 라이브러리의POSIX_SPAWN_SETSCHEDPARAM및POSIX_SPAWN_SETSCHEDULER플래그의 조합입니다.path,argv,env를 인자로 감사 이벤트(auditing event)os.posix_spawn을 발생시킵니다.Added in version 3.8.
버전 3.13에서 변경: env 매개 변수는
None을 허용합니다.posix_spawn_file_actions_addclosefrom_np()가 존재하는 플랫폼에서는os.POSIX_SPAWN_CLOSEFROM를 사용할 수 있습니다.가용성: Unix, not WASI, not Android, not iOS.
- os.posix_spawnp(path, argv, env, *, file_actions=None, setpgroup=None, resetids=False, setsid=False, setsigmask=(), setsigdef=(), scheduler=None)¶
Python에서 사용하기 위해
posix_spawnp()C 라이브러리 API를 래핑한 것입니다.시스템이 (
execvp(3)과 같은 방식으로)PATH환경 변수에 의해 지정된 디렉터리 목록에서 실행 파일을 검색한다는 점을 제외하고는posix_spawn()과 유사합니다.path,argv,env를 인자로 감사 이벤트(auditing event)os.posix_spawn을 발생시킵니다.Added in version 3.8.
가용성: POSIX, not WASI, not Android, not iOS.
posix_spawn()문서를 참조하십시오.
- os.register_at_fork(*, before=None, after_in_parent=None, after_in_child=None)¶
os.fork()또는 유사한 프로세스 복제 API를 사용하여 새 자식 프로세스가 포크 될 때 실행될 콜러블들을 등록합니다. 매개 변수는 선택적이며 키워드 전용입니다. 각각은 다른 호출 지점을 지정합니다.before 는 자식 프로세스를 포크 하기 전에 호출되는 함수입니다.
after_in_parent 는 자식 프로세스를 포크 한 후에 부모 프로세스에서 호출되는 함수입니다.
after_in_child 는 자식 프로세스에서 호출되는 함수입니다.
이러한 호출은 제거가 파이썬 인터프리터로 반환될 것으로 예상되는 경우에만 수행됩니다. 일반적인
subprocess실행은 자식이 인터프리터로 재진입하지 않기 때문에, 이 호출들이 일어나지 않습니다.포크 이전에 실행되도록 등록된 함수는 등록 역순으로 실행됩니다. 포크 후에 실행되도록 등록된 함수(부모나 자식 모두)는 등록 순서로 호출됩니다.
제삼자 C 코드에 의한
fork()호출은, 그것이 명시적으로PyOS_BeforeFork(),PyOS_AfterFork_Parent()및PyOS_AfterFork_Child()를 호출하지 않는 한, 이 함수들을 호출하지 않습니다.함수 등록을 취소할 방법은 없습니다.
가용성: Unix, not WASI, not Android, not iOS.
Added in version 3.7.
- os.spawnl(mode, path, ...)¶
- os.spawnle(mode, path, ..., env)¶
- os.spawnlp(mode, file, ...)¶
- os.spawnlpe(mode, file, ..., env)¶
- os.spawnv(mode, path, args)¶
- os.spawnve(mode, path, args, env)¶
- os.spawnvp(mode, file, args)¶
- os.spawnvpe(mode, file, args, env)¶
새 프로세스에서 프로그램 path 를 실행합니다.
(
subprocess모듈은 새 프로세스를 생성하고 결과를 조회하는데, 더욱 강력한 기능을 제공합니다; 이 모듈을 사용하는 것이 이 함수들을 사용하는 것보다 더 바람직합니다. 특히 subprocess 모듈로 이전 기능 대체하기 섹션을 확인하십시오.)mode 가
P_NOWAIT면, 이 함수는 새 프로세스의 프로세스 ID를 반환합니다; mode가P_WAIT면, 종료 코드(정상적으로 종료했을 때)나-signal(signal은 프로세스를 죽인 시그널입니다)을 반환합니다. 윈도우에서, 프로세스 ID는 실제로 프로세스 핸들이므로,waitpid()함수에 사용할 수 있습니다.VxWorks에서, 이 함수는 새로운 프로세스가 죽을(kill) 때
-signal을 반환하지 않습니다. 대신 OSError 예외가 발생합니다.spawn*함수의 “l” 및 “v” 변형은 명령어 줄 인자를 전달하는 방식에서 차이가 있습니다. “l” 변형이 작성 시 매개변수 수가 고정되어 있다면 다루기 가장 쉽습니다. 개별 매개변수는 단순히spawnl*()함수의 추가 매개변수가 됩니다. “v” 변형은 매개변수 수가 가변적일 때 유용하며, 인자는 args 매개변수로 리스트 또는 튜플로 전달됩니다. 어느 경우에도 자식 프로세스에 대한 인자는 실행하려는 명령어의 이름으로 시작해야 합니다.끝 근처에 두 번째 “p”가 포함된 변형(
spawnlp(),spawnlpe(),spawnvp()및spawnvpe())은PATH환경 변수를 사용하여 프로그램 file 을 찾습니다. 환경이 대체 될 때 (다음 단락에서 설명할spawn*e변형 중 하나를 사용하여), 새 환경이PATH변수의 소스로 사용됩니다. 다른 변형spawnl(),spawnle(),spawnv()및spawnve()는PATH변수를 사용하여 실행 파일을 찾지 않습니다; path 에는 반드시 적절한 절대 또는 상대 경로가 있어야 합니다.spawnle(),spawnlpe(),spawnve()및spawnvpe()의 경우 (모두 “e”로 끝납니다), env 매개 변수는 새 프로세스의 환경 변수를 정의하는 데 사용되는 매핑이어야 합니다 (이것이 현재 프로세스의 환경 대신 사용됩니다); 함수spawnl(),spawnlp(),spawnv()및spawnvp()는 모두 새 프로세스가 현재 프로세스의 환경을 상속하게 합니다. env 딕셔너리의 키와 값은 반드시 문자열이어야 함에 주의하십시오; 잘못된 키나 값은 반환 값127로 함수가 실패하게 합니다.예를 들어,
spawnlp()및spawnvpe()에 대한 다음 호출은 동등합니다:import os os.spawnlp(os.P_WAIT, 'cp', 'cp', 'index.html', '/dev/null') L = ['cp', 'index.html', '/dev/null'] os.spawnvpe(os.P_WAIT, 'cp', L, os.environ)
mode,path,args,env를 인자로 감사 이벤트(auditing event)os.spawn을 발생시킵니다.가용성: Unix, Windows, not WASI, not Android, not iOS.
spawnlp(),spawnlpe(),spawnvp()및spawnvpe()는 Windows에서 사용할 수 없습니다.spawnle()와spawnve()는 Windows에서 스레드 안전(thread-safe)하지 않으므로 대신subprocess모듈을 사용하는 것을 권장합니다.버전 3.6에서 변경: 경로류 객체를 받아들입니다.
버전 3.14부터 약하게 폐지 <Soft deprecated>: 대신에
subprocess모듈을 사용할 것을 권장합니다.
- os.P_NOWAIT¶
- os.P_NOWAITO¶
spawn*계열 함수의 mode 매개변수에 사용할 수 있는 값입니다. 이 값들 중 하나가 제공되면,spawn*함수는 새 프로세스가 생성되는 즉시 반환되며, 반환값은 해당 프로세스 ID입니다.가용성: Unix, Windows.
- os.P_WAIT¶
spawn*계열 함수의 mode 매개변수에 사용할 수 있는 값입니다. 이 값이 mode 로 제공되면,spawn*함수는 새 프로세스가 완전히 실행될 때까지 반환하지 않으며, 실행이 성공하면 프로세스의 종료 코드를 반환하고 시그널에 의해 프로세스가 종료되면-signal을 반환합니다.가용성: Unix, Windows.
- os.P_DETACH¶
- os.P_OVERLAY¶
spawn*계열 함수의 mode 매개 변수에 사용할 수 있는 값. 이들은 위에 나열된 것보다 이식성이 낮습니다.P_DETACH는P_NOWAIT와 비슷하지만, 새 프로세스는 호출 프로세스의 콘솔에서 분리됩니다.P_OVERLAY가 사용되면, 현재 프로세스가 대체됩니다;spawn*함수가 반환되지 않습니다.가용성: Windows.
- os.startfile(path[, operation][, arguments][, cwd][, show_cmd])¶
연관된 응용 프로그램으로 파일을 시작합니다.
operation 이 지정되지 않은 경우, 이 함수는 Windows Explorer에서 파일을 더블 클릭하거나 대화형 명령 셸에서 파일 이름을 start 명령의 인자로 전달하는 것과 동일하게 작동합니다. 즉, 파일이 해당 확장자와 연결된 애플리케이션(있는 경우)으로 열립니다.
다른 operation 이 제공되는 경우, 이는 파일에 수행할 작업을 지정하는 “명령 동사”여야 합니다. Microsoft에서 문서화한 일반적인 동사로는
'open','print','edit'(파일용) 및'explore','find'(디렉터리용)이 있습니다.애플리케이션을 실행할 때, arguments 를 단일 문자열로 지정하십시오. 이 인자는 해당 함수를 사용하여 문서를 실행할 때는 아무런 효과가 없을 수 있습니다.
기본 작업 디렉터리는 상속되지만, cwd 인자에 의해 재정의될 수 있습니다. 이는 절대 경로여야 합니다. 상대적인 path 는 이 인수를 기준으로 해석됩니다.
기본 창 스타일을 재정의하려면 show_cmd 를 사용하십시오. 이것이 효과가 있을지는 실행되는 애플리케이션에 따라 다릅니다. 값은 Win32
ShellExecute()함수가 지원하는 정수형입니다.startfile()은 연결된 애플리케이션이 시작되는 즉시 반환됩니다. 애플리케이션이 닫힐 때까지 기다리는 옵션은 없으며, 애플리케이션의 종료 상태를 가져오는 방법도 없습니다. path 매개변수는 현재 디렉터리 또는 cwd 를 기준으로 합니다. 절대 경로를 사용하려면 첫 번째 문자가 슬래시('/')가 아닌지 확인하십시오. Win32용으로 경로가 올바르게 인코딩되었는지 확인하려면pathlib이나os.path.normpath()함수를 사용하십시오.인터프리터 시작 오버헤드를 줄이기 위해, Win32
ShellExecute()함수는 이 함수가 처음 호출될 때까지 해석되지 않습니다. 함수를 해석할 수 없는 경우,NotImplementedError가 발생합니다.path,operation을 인자로 감사 이벤트(auditing event)os.startfile을 발생시킵니다.path,operation,arguments,cwd,show_cmd인자를 사용하여 auditing eventos.startfile/2를 생성합니다.가용성: Windows.
버전 3.10에서 변경: arguments, cwd 및 show_cmd 인자와
os.startfile/2감사 이벤트를 추가했습니다.
- os.system(command)¶
서브쉘에서 명령(문자열)을 실행합니다. 이는 표준 C 함수인
system()을 호출하여 구현되며 동일한 제한 사항이 있습니다.sys.stdin등의 변경 사항은 실행된 명령의 환경에 반영되지 않습니다. command 가 출력을 생성하는 경우 인터프리터의 표준 출력 스트림으로 전송됩니다. C 표준은 C 함수의 반환 값의 의미를 정의하지 않으므로, Python 함수의 반환 값은 시스템에 따라 다릅니다.Unix에서 반환 값은
wait()에 지정된 형식으로 인코딩된 프로세스의 종료 상태입니다.윈도우에서, 반환 값은 command를 실행한 후 시스템 셸에서 반환한 값입니다. 셸은 윈도우 환경 변수
COMSPEC에 의해 제공됩니다: 보통 cmd.exe인데, 명령 실행의 종료 상태를 반환합니다; 기본이 아닌 셸을 사용하는 시스템에서는 셸 설명서를 참조하십시오.subprocess모듈은 새로운 프로세스를 생성하고 그 결과를 가져오는 데 더 강력한 기능을 제공합니다. 이 함수를 사용하는 대신 해당 모듈을 사용하는 것을 권장합니다. 도움이 되는 방법은subprocess문서의 subprocess 모듈로 이전 기능 대체하기 섹션을 참조하십시오.유닉스에서,
waitstatus_to_exitcode()를 사용하여 결과(종료 상태)를 종료 코드로 변환할 수 있습니다. 윈도우에서, 결과는 직접 종료 코드입니다.command를 인자로 감사 이벤트(auditing event)os.system을 발생시킵니다.가용성: Unix, Windows, not WASI, not Android, not iOS.
- os.times()¶
현재 전역 프로세스 시간을 반환합니다. 반환 값은 5가지 어트리뷰트를 가진 객체입니다:
user- 사용자 시간system- 시스템 시간children_user- 모든 자식 프로세스의 사용자 시간children_system- 모든 자식 프로세스의 시스템 시간elapsed- 과거의 특정 시점부터 경과된 실제 시간
하위 호환성을 위해, 이 객체는 또한
user,system,children_user,children_system및elapsed를 해당 순서로 포함하는 5-튜플처럼 동작합니다.Unix의 매뉴얼 페이지 times(2) 및 times(3) <https://man.freebsd.org/cgi/man.1> ` 또는 Windows의 GetProcessTimes MSDN <https://docs.microsoft.com/windows/win32/api/processthreadsapi/nf-processthreadsapi-getprocesstimes> 를 참조하십시오. Windows에서는
user와system만 확인 가능하며, 나머지 속성은 0입니다.가용성: Unix, Windows.
버전 3.3에서 변경: 반환형이 튜플에서 이름이 지정된 어트리뷰트를 가진 튜플류 객체로 변경되었습니다.
- os.wait()¶
자식 프로세스가 완료될 때까지 기다렸다가, pid 및 종료 상태 표시를 포함하는 튜플을 반환합니다: 종료 상태 표시는 16비트 숫자인데, 하위 바이트가 프로세스를 죽인 시그널 번호이고, 상위 바이트가 종료 상태(시그널 번호가 0이면)입니다; 코어 파일이 생성되면 하위 바이트의 상위 비트가 설정됩니다.
대기할 수 있는 자식 프로세스가 없는 경우,
ChildProcessError가 발생합니다.waitstatus_to_exitcode()를 사용하여 종료 상태를 종료 코드로 변환할 수 있습니다.가용성: Unix, not WASI, not Android, not iOS.
더 보기
아래에 설명된 다른
wait*()함수들은 특정 자식 프로세스의 완료를 기다리는 데 사용될 수 있으며 더 많은 옵션을 제공합니다.waitpid()는 Windows에서도 사용할 수 있는 유일한 함수입니다.
- os.waitid(idtype, id, options, /)¶
자식 프로세스가 완료될 때까지 기다립니다.
idtype 은
P_PID,P_PGID,P_ALL또는 (Linux에서)P_PIDFD가 될 수 있습니다. id 의 해석은 해당 타입에 따라 달라지므로 각각의 설명을 참조하십시오.options 는 플래그들의 OR 조합입니다. 최소 하나 이상의
WEXITED,WSTOPPED또는WCONTINUED가 필요합니다.WNOHANG및WNOWAIT은 추가적인 선택적 플래그입니다.반환 값은 다음 속성을 가진
siginfo_t구조체에 포함된 데이터를 나타내는 객체입니다.si_pid(프로세스 ID)si_uid(자식의 실제 사용자 ID)si_signo(항상SIGCHLD)si_status(si_code에 따라 종료 상태 또는 시그널 번호)si_code(가능한 값은CLD_EXITED참조)
WNOHANG이 지정되고 요청된 상태에 맞는 자식이 없는 경우,None이 반환됩니다. 그렇지 않고 대기할 수 있는 일치하는 자식이 없는 경우,ChildProcessError가 발생합니다.가용성: Unix, not WASI, not Android, not iOS.
Added in version 3.3.
버전 3.13에서 변경: 이 함수는 이제 macOS에서도 사용할 수 있습니다.
- os.waitpid(pid, options, /)¶
이 함수의 세부 사항은 유닉스 및 윈도우에서 다릅니다.
유닉스에서: 프로세스 ID pid에 의해 주어진 자식 프로세스의 완료를 기다리고, 프로세스 ID와 종료 상태 표시(
wait()처럼 인코딩됨)를 포함하는 튜플을 반환합니다. 호출의 의미는 정수 options 의 값에 영향을 받는데, 일반 작업의 경우0이어야 합니다.pid 가
0보다 크면,waitpid()는 해당 프로세스에 대한 상태 정보를 요청합니다. pid 가0이면, 현재 프로세스의 프로세스 그룹에 있는 모든 자식의 상태를 요청합니다. pid 가-1이면, 현재 프로세스의 모든 자식의 상태를 요청합니다. pid 가-1보다 작으면, 프로세스 그룹-pid(pid 의 절댓값)에 있는 모든 프로세스의 상태를 요청합니다.options 은 플래그의 OR 조합입니다. 이 값이
WNOHANG을 포함하고 요청된 상태에 맞는 자식이 없는 경우,(0, 0)이 반환됩니다. 그렇지 않고 대기할 수 있는 일치하는 자식이 없는 경우,ChildProcessError가 발생합니다. 사용할 수 있는 다른 옵션으로는WUNTRACED와WCONTINUED가 있습니다.윈도우에서: 프로세스 핸들 pid로 지정된 프로세스가 완료될 때까지 기다리고, pid와 종료 상태를 8비트 왼쪽으로 시프트 한 값을 포함하는 튜플을 반환합니다 (시프팅이 함수를 더 이식성 있게 만듭니다).
0보다 작거나 같은 pid 는 윈도우에서 특별한 의미가 없고 예외가 발생합니다. 정수 options 의 값은 아무 효과가 없습니다. pid 는 id가 알려진 모든 프로세스를 가리킬 수 있습니다, 반드시 자식 프로세스일 필요는 없습니다.P_NOWAIT로 호출된spawn*함수는 적절한 프로세스 핸들을 반환합니다.waitstatus_to_exitcode()를 사용하여 종료 상태를 종료 코드로 변환할 수 있습니다.가용성: Unix, Windows, not WASI, not Android, not iOS.
버전 3.5에서 변경: 시스템 호출이 인터럽트 되고 시그널 처리기가 예외를 발생시키지 않으면, 함수는 이제
InterruptedError예외를 일으키는 대신 시스템 호출을 재시도합니다 (이유는 PEP 475를 참조하세요).
- os.wait3(options)¶
waitpid()와 유사하지만 프로세스 ID 인자가 제공되지 않으며, 자식의 프로세스 ID, 종료 상태 표시 및 리소스 사용 정보가 포함된 3개 요소의 튜플이 반환됩니다. 리소스 사용 정보에 대한 자세한 내용은resource.getrusage()를 참조하십시오. options 인자는waitpid()및wait4()에 제공되는 것과 동일합니다.waitstatus_to_exitcode()를 사용하여 종료 상태를 종료 코드로 변환할 수 있습니다.가용성: Unix, not WASI, not Android, not iOS.
- os.wait4(pid, options)¶
waitpid()와 유사하지만 자식의 프로세스 ID, 종료 상태 표시 및 리소스 사용 정보가 포함된 3개 요소의 튜플이 반환됩니다. 리소스 사용 정보에 대한 자세한 내용은resource.getrusage()를 참조하십시오.wait4()에 전달되는 인자는waitpid()에 제공되는 것과 동일합니다.waitstatus_to_exitcode()를 사용하여 종료 상태를 종료 코드로 변환할 수 있습니다.가용성: Unix, not WASI, not Android, not iOS.
- os.P_PID¶
- os.P_PGID¶
- os.P_ALL¶
- os.P_PIDFD¶
이들은
waitid()에서 idtype 의 가능한 값입니다. 이 값들은 id 가 해석되는 방식에 영향을 미칩니다:P_PID- PID가 id 인 자식을 기다립니다.P_PGID- 프로세스 그룹 ID가 id 인 모든 자식을 기다립니다.P_ALL- 모든 자식을 기다립니다. id 는 무시됩니다.P_PIDFD- 파일 기술자 id 로 식별되는 자식을 기다립니다(pidfd_open()으로 생성된 프로세스 파일 기술자).
가용성: Unix, not WASI, not Android, not iOS.
참고
P_PIDFD는 Linux 5.4 이상에서만 사용할 수 있습니다.Added in version 3.3.
Added in version 3.9:
P_PIDFD상수.
- os.WCONTINUED¶
이 options 플래그는
waitpid(),wait3(),wait4()및waitid()에서 마지막으로 보고된 이후 작업 제어 중단 상태에서 재개된 자식 프로세스를 보고하게 합니다.가용성: Unix, not WASI, not Android, not iOS.
- os.WEXITED¶
이 options 플래그는
waitid()에서 종료된 자식 프로세스가 보고되도록 합니다.다른
wait*함수들은 항상 종료된 자식을 보고하므로, 이 옵션은 해당 함수들에서는 사용할 수 없습니다.가용성: Unix, not WASI, not Android, not iOS.
Added in version 3.3.
- os.WSTOPPED¶
이 options 플래그는
waitid()에서 시그널 전달로 인해 중단된 자식 프로세스가 보고되도록 합니다.이 옵션은 다른
wait*함수에서는 사용할 수 없습니다.가용성: Unix, not WASI, not Android, not iOS.
Added in version 3.3.
- os.WUNTRACED¶
이 options 플래그는
waitpid(),wait3(),wait4()에서 중단되었으나 현재 상태가 보고되지 않은 자식 프로세스도 보고되도록 합니다.이 옵션은
waitid()에서는 사용할 수 없습니다.가용성: Unix, not WASI, not Android, not iOS.
- os.WNOHANG¶
이 options 플래그는 즉시 사용 가능한 자식 프로세스 상태가 없는 경우
waitpid(),wait3(),wait4(), 및waitid()가 즉시 반환되도록 합니다.가용성: Unix, not WASI, not Android, not iOS.
- os.WNOWAIT¶
이 options 플래그는
waitid`에서 자식 프로세스를 대기 가능한 상태로 유지하여, 나중에 다른 :func:()!wait*` 호출을 통해 자식의 상태 정보를 다시 가져올 수 있게 합니다.이 옵션은 다른
wait*함수에서는 사용할 수 없습니다.가용성: Unix, not WASI, not Android, not iOS.
- os.CLD_EXITED¶
- os.CLD_KILLED¶
- os.CLD_DUMPED¶
- os.CLD_TRAPPED¶
- os.CLD_STOPPED¶
- os.CLD_CONTINUED¶
이들은
waitid`가 반환하는 결과에서 :attr:()!si_code`의 가능한 값입니다.가용성: Unix, not WASI, not Android, not iOS.
Added in version 3.3.
버전 3.9에서 변경:
CLD_KILLED와CLD_STOPPED값을 추가했습니다.
- os.waitstatus_to_exitcode(status)¶
대기 상태(wait status)를 종료 코드로 변환합니다.
유닉스에서:
프로세스가 정상적으로 종료되면 (
WIFEXITED(status)가 참이면), 프로세스 종료 상태를 반환합니다 (WEXITSTATUS(status)를 반환합니다): 결과는 0보다 크거나 같습니다.프로세스가 시그널에 의해 종료되면 (
WIFSIGNALED(status)가 참이면),-signum을 반환합니다, 여기서 signum은 프로세스를 종료시킨 시그널 번호입니다 (-WTERMSIG(status)를 반환합니다): 결과는 0보다 작습니다.그렇지 않으면,
ValueError를 발생시킵니다.
윈도우에서, 8비트만큼 오른쪽으로 시프트된 status를 반환합니다.
유닉스에서, 프로세스가 추적되고 있거나
waitpid()가WUNTRACED옵션으로 호출되었으면, 호출자는 먼저WIFSTOPPED(status)가 참인지 확인해야 합니다.WIFSTOPPED(status)가 참이면 이 함수를 호출하면 안 됩니다.더 보기
WIFEXITED(),WEXITSTATUS(),WIFSIGNALED(),WTERMSIG(),WIFSTOPPED(),WSTOPSIG()함수.가용성: Unix, Windows, not WASI, not Android, not iOS.
Added in version 3.9.
다음 함수들은 system(), wait() 또는 waitpid()에 의해 반환된 프로세스 상태 코드를 매개 변수로 받아들입니다. 이것들은 프로세스의 처리를 결정하는 데 사용될 수 있습니다.
- os.WCOREDUMP(status, /)¶
프로세스에 대해 코어 덤프가 생성되었으면
True를 반환하고, 그렇지 않으면False를 반환합니다.이 함수는
WIFSIGNALED()가 참일 때만 사용해야 합니다.가용성: Unix, not WASI, not Android, not iOS.
- os.WIFCONTINUED(status)¶
자식 프로세스가
SIGCONT의 전송으로 재개되었으면True을 반환하고, 그렇지 않으면False를 반환합니다.WCONTINUED옵션을 참조하십시오.가용성: Unix, not WASI, not Android, not iOS.
- os.WIFSTOPPED(status)¶
시그널의 전달로 인해 프로세스가 중지되었으면
True를 반환하고, 그렇지 않으면False를 반환합니다.WIFSTOPPED()는WUNTRACED옵션을 사용하여waitpid()을 호출했거나 프로세스가 추적되고 있을 때만True를 반환합니다 (ptrace(2)를 참조하십시오).가용성: Unix, not WASI, not Android, not iOS.
- os.WIFSIGNALED(status)¶
시그널로 인해 프로세스가 종료되었으면
True를 반환하고, 그렇지 않으면False를 반환합니다.가용성: Unix, not WASI, not Android, not iOS.
- os.WIFEXITED(status)¶
프로세스가 정상 종료했으면
True를 반환합니다, 즉exit()나_exit()를 호출했거나,main()에서 반환하여; 그렇지 않으면False를 반환합니다.가용성: Unix, not WASI, not Android, not iOS.
- os.WEXITSTATUS(status)¶
프로세스 종료 상태를 반환합니다.
이 함수는
WIFEXITED()가 참일 때만 사용해야 합니다.가용성: Unix, not WASI, not Android, not iOS.
- os.WSTOPSIG(status)¶
프로세스를 멈추게 한 시그널을 반환합니다.
이 함수는
WIFSTOPPED()가 참일 때만 사용해야 합니다.가용성: Unix, not WASI, not Android, not iOS.
- os.WTERMSIG(status)¶
프로세스를 종료시킨 시그널의 번호를 반환합니다.
이 함수는
WIFSIGNALED()가 참일 때만 사용해야 합니다.가용성: Unix, not WASI, not Android, not iOS.
스케줄러에 대한 인터페이스¶
이 함수들은 운영 체제가 프로세스에 CPU 시간을 할당하는 방법을 제어합니다. 일부 유닉스 플랫폼에서만 사용할 수 있습니다. 자세한 내용은 유닉스 매뉴얼 페이지를 참조하십시오.
Added in version 3.3.
다음 스케줄 정책은 운영 체제에서 지원하는 경우 공개됩니다.
- os.SCHED_OTHER¶
기본 스케줄 정책.
- os.SCHED_BATCH¶
컴퓨터의 나머지 부분에서 반응성을 유지하려고 하는 CPU 집약적인 프로세스를 위한 스케줄 정책.
- os.SCHED_DEADLINE¶
마감 기한 제약이 있는 태스크에 대한 스케줄링 정책.
Added in version 3.14.
- os.SCHED_IDLE¶
매우 낮은 우선순위의 배경 작업에 대한 스케줄 정책.
- os.SCHED_NORMAL¶
SCHED_OTHER의 별칭.Added in version 3.14.
- os.SCHED_SPORADIC¶
간헐적인 서버 프로그램을 위한 스케줄 정책.
- os.SCHED_FIFO¶
선입 선출 (First In First Out) 스케줄 정책.
- os.SCHED_RR¶
라운드 로빈 스케줄 정책.
- os.SCHED_RESET_ON_FORK¶
이 플래그는 다른 스케줄 정책과 OR 될 수 있습니다. 이 플래그가 설정되어있는 프로세스가 포크 할 때, 자식의 스케줄링 정책 및 우선순위가 기본값으로 재설정됩니다.
- class os.sched_param(sched_priority)¶
이 클래스는
sched_setparam(),sched_setscheduler(), 및sched_getparam()에서 사용되는 튜닝 가능한 스케줄 파라미터를 나타냅니다. 불변입니다.현재, 가능한 매개 변수는 하나뿐입니다:
- sched_priority¶
스케줄 정책의 스케줄 우선순위.
- os.sched_get_priority_min(policy)¶
policy의 최소 우선순위 값을 가져옵니다. policy 는 위의 스케줄 정책 상수 중 하나입니다.
- os.sched_get_priority_max(policy)¶
policy의 최대 우선순위 값을 가져옵니다. policy 는 위의 스케줄 정책 상수 중 하나입니다.
- os.sched_setscheduler(pid, policy, param, /)¶
PID가 pid인 프로세스의 스케줄 정책을 설정합니다. pid 가 0이면, 호출하는 프로세스를 의미합니다. policy 는 위의 스케줄 정책 상수 중 하나입니다. param 은
sched_param인스턴스입니다.
- os.sched_getscheduler(pid, /)¶
PID가 pid인 프로세스의 스케줄 정책을 반환합니다. pid 가 0이면, 호출하는 프로세스를 의미합니다. 결과는 위의 스케줄 정책 상수 중 하나입니다.
- os.sched_setparam(pid, param, /)¶
PID가 pid 인 프로세스의 스케줄링 파라미터를 설정합니다. pid 가 0이면 호출하는 프로세스를 의미합니다. param 은
sched_param인스턴스입니다.
- os.sched_getparam(pid, /)¶
PID가 pid인 프로세스의 스케줄 매개 변수를
sched_param인스턴스로 반환합니다. pid 가 0이면 호출하는 프로세스를 의미합니다.
- os.sched_rr_get_interval(pid, /)¶
PID가 pid인 프로세스의 라운드 로빈 퀀텀을 초 단위로 반환합니다. pid 가 0이면 호출하는 프로세스를 의미합니다.
- os.sched_yield()¶
자발적으로 CPU를 양도합니다. 자세한 내용은 sched_yield(2) 를 참조하십시오.
- os.sched_setaffinity(pid, mask, /)¶
PID가 pid인 프로세스(또는 0이면 현재 프로세스)를 CPU 집합으로 제한합니다. mask 는 프로세스가 제한되어야 하는 CPU 집합을 나타내는 정수의 이터러블입니다.
- os.sched_getaffinity(pid, /)¶
PID가 pid 인 프로세스가 제한된 CPU 세트를 반환합니다.
pid 이 0이면 현재 프로세스의 호출 스레드가 제한된 CPU 세트를 반환합니다.
process_cpu_count()함수도 참조하십시오.
기타 시스템 정보¶
- os.confstr(name, /)¶
문자열 값 시스템 구성 값을 반환합니다. name 은 조회할 구성 값을 지정합니다; 정의된 시스템 값의 이름인 문자열일 수 있습니다; 이 이름은 여러 표준(POSIX, 유닉스 95, 유닉스 98 및 기타)에서 지정됩니다. 일부 플랫폼은 추가 이름도 정의합니다. 호스트 운영 체제에 알려진 이름은
confstr_names딕셔너리의 키로 제공됩니다. 해당 매핑에 포함되지 않은 구성 변수를 위해, name에 정수를 전달하는 것도 허용됩니다.name 으로 지정된 구성 값이 정의되어 있지 않으면,
None이 반환됩니다.name 이 문자열이고 알 수 없으면,
ValueError가 발생합니다. name에 대한 특정 값이 호스트 시스템에서 지원되지 않으면,confstr_names에 포함되어 있어도, 에러 번호errno.EINVAL로OSError가 발생합니다.가용성: Unix.
- os.confstr_names¶
confstr()에서 허용하는 이름을 호스트 운영 체제가 해당 이름에 대해 정의한 정숫값으로 매핑하는 딕셔너리입니다. 이것은 시스템에 알려진 이름 집합을 판별하는 데 사용될 수 있습니다.가용성: Unix.
- os.cpu_count()¶
시스템 의 논리 CPU 수를 반환합니다. 알 수 없는 경우
None을 반환합니다.process_cpu_count()함수를 사용하여 현재 프로세스 의 호출 스레드에서 사용할 수 있는 논리 CPU 수를 가져올 수 있습니다.Added in version 3.4.
버전 3.13에서 변경:
-X cpu_count가 제공되거나PYTHON_CPU_COUNT이 설정된 경우,cpu_count()는 덮어쓰기 값 n 을 반환합니다.
- os.getloadavg()¶
마지막 1, 5, 15분에 걸쳐 평균한 시스템 실행 대기열의 프로세스 수를 반환하거나, 로드 평균을 얻을 수 없으면,
OSError를 발생시킵니다.가용성: Unix.
- os.process_cpu_count()¶
현재 프로세스 의 호출 스레드에서 사용할 수 있는 논리 CPU 수를 가져옵니다. 알 수 없는 경우
None을 반환합니다. CPU 어피니티(affinity)에 따라cpu_count()보다 적을 수 있습니다.cpu_count()함수를 사용하여 시스템 의 논리 CPU 수를 가져올 수 있습니다.-X cpu_count가 제공되거나PYTHON_CPU_COUNT이 설정된 경우,process_cpu_count()는 덮어쓰기 값 n 을 반환합니다.sched_getaffinity()함수도 참조하십시오.Added in version 3.13.
- os.sysconf(name, /)¶
정숫값 시스템 구성 값을 반환합니다. name 으로 지정된 구성 값이 정의되어 있지 않으면,
-1이 반환됩니다.confstr()의 name 매개 변수에 관한 주석은 여기에도 적용됩니다; 알려진 이름에 대한 정보를 제공하는 딕셔너리는sysconf_names에 의해 제공됩니다.가용성: Unix.
- os.sysconf_names¶
sysconf()에서 허용하는 이름을 호스트 운영 체제가 해당 이름에 대해 정의한 정숫값으로 매핑하는 딕셔너리입니다. 이것은 시스템에 알려진 이름 집합을 판별하는 데 사용될 수 있습니다.가용성: Unix.
버전 3.11에서 변경:
'SC_MINSIGSTKSZ'이름을 추가합니다.
다음 데이터값들은 경로 조작 연산을 지원하는 데 사용됩니다. 이는 모든 플랫폼에서 정의됩니다.
경로명에 대한 고수준 연산은 os.path 모듈에서 정의됩니다.
- os.pardir¶
부모 디렉터리를 가리키기 위해 운영 체제에서 사용하는 상수 문자열입니다. 이것은 윈도우 및 POSIX의 경우
'..'입니다.os.path를 통해서도 제공됩니다.
- os.sep¶
경로명 구성 요소를 분리하기 위해 운영 체제에서 사용하는 문자. 이것은 POSIX의 경우
'/'이고, 윈도우의 경우'\\'입니다. 이것을 아는 것만으로는 경로명을 구문 분석하거나 이어붙일 수는 없습니다만 —os.path.split()와os.path.join()를 사용하세요 — 가끔 유용합니다.os.path를 통해서도 제공됩니다.
- os.altsep¶
경로명 구성 요소를 분리하기 위해 운영 체제에서 사용하는 대체 문자이거나, 단 하나의 구분 문자만 있는 경우
None입니다.sep가 백 슬래시인 윈도우 시스템에서는'/'로 설정됩니다.os.path를 통해서도 제공됩니다.
- os.pathsep¶
검색 경로 구성 요소(
PATH에서와 같이)를 분리하기 위해 운영 체제에서 관습적으로 사용하는 문자, 가령 POSIX의':'또는 윈도우의';'.os.path를 통해서도 제공됩니다.
- os.linesep¶
현재 플랫폼에서 행을 분리(또는 종료)하는 데 사용되는 문자열. 이는 POSIX의
'\n'와 같은 단일 문자이거나, 윈도우의'\r\n'와 같은 여러 문자일 수 있습니다. 텍스트 모드로 열린(기본값) 파일에 쓸 때 줄 종결자로 os.linesep를 사용하지 마십시오; 대신 모든 플랫폼에서 단일'\n'를 사용하십시오.
- os.RTLD_LAZY¶
- os.RTLD_NOW¶
- os.RTLD_GLOBAL¶
- os.RTLD_LOCAL¶
- os.RTLD_NODELETE¶
- os.RTLD_NOLOAD¶
- os.RTLD_DEEPBIND¶
setdlopenflags()및getdlopenflags()함수에 사용하는 플래그. 각 플래그가 의미하는 바는 유닉스 매뉴얼 페이지 dlopen(3)를 참조하십시오.Added in version 3.3.
난수¶
- os.getrandom(size, flags=0)¶
최대 size 크기의 난수 바이트열을 업습니다. 이 함수는 요청한 것보다 짧은 바이트열를 반환할 수 있습니다.
이 바이트열은 사용자 공간 난수 발생기를 시드 하거나 암호화 목적으로 사용할 수 있습니다.
getrandom()는 장치 드라이버 및 기타 환경 소음원에서 수집한 엔트로피에 의존합니다. 대량의 데이터를 불필요하게 읽는 것은/dev/random및/dev/urandom장치의 다른 사용자에게 부정적인 영향을 미칩니다.flags 인자는 다음과 같은 값들을 비트 단위 OR 연산한 0개 이상의 값을 포함할 수 있는 비트 마스크입니다:
os.GRND_RANDOM및GRND_NONBLOCK.Linux getrandom() 매뉴얼 페이지 를 참조하십시오.
가용성: Linux >= 3.17.
Added in version 3.6.
- os.urandom(size, /)¶
암호화 용도에 적합한 size 바이트의 무작위 바이트 문자열을 반환합니다.
이 함수는 OS 종속적인 임의성 소스에서 난수 바이트열을 반환합니다. 반환된 데이터는 암호화 응용에 충분하도록 예측할 수 없어야 하지만, 정확한 품질은 OS 구현에 따라 달라집니다.
리눅스에서,
getrandom()시스템 호출을 사용할 수 있으면, 블로킹 모드로 사용됩니다: 시스템의 urandom 엔트로피 풀이 초기화될 때까지 블록 됩니다 (커널이 128비트의 엔트로피를 수집합니다). 이유는 PEP 524를 참조하십시오. 리눅스에서,getrandom()함수는 (GRND_NONBLOCK플래그를 사용하여) 비 블로킹 모드로 난수 바이트열을 얻거나, 시스템 urandom 엔트로피 풀이 초기화될 때까지 폴링 할 수 있습니다.유닉스류 시스템에서,
/dev/urandom장치에서 난수 바이트열을 읽습니다./dev/urandom장치를 사용할 수 없거나 읽을 수 없으면,NotImplementedError예외가 발생합니다.Windows에서는
BCryptGenRandom()을 사용합니다.더 보기
secrets모듈은 고수준 함수를 제공합니다. 플랫폼에서 제공되는 난수 발생기에 대한 사용하기 쉬운 인터페이스는random.SystemRandom를 참조하십시오.버전 3.5에서 변경: 리눅스 3.17 및 이후 버전에서, 이제
getrandom()시스템 호출을 사용할 수 있으면 사용합니다. OpenBSD 5.6 이상에서, Cgetentropy()함수가 이제 사용됩니다. 이 함수들은 내부 파일 기술자의 사용을 피합니다.버전 3.5.2에서 변경: 리눅스에서,
getrandom()시스템 호출이 블록 하면 (urandom 엔트로피 풀이 아직 초기화되지 않았으면),/dev/urandom을 읽는 것으로 대체됩니다.버전 3.6에서 변경: 리눅스에서,
getrandom()은 이제 보안을 강화하기 위해 블로킹 모드로 사용됩니다.버전 3.11에서 변경: Windows에서는 더 이상 권장되지 않는(deprecated)
CryptGenRandom()대신BCryptGenRandom()을 사용합니다.
- os.GRND_NONBLOCK¶
기본적으로,
/dev/random에서 읽을 때,getrandom()는 사용할 수 있는 난수 바이트열이 없으면 블록 하고,/dev/urandom에서 읽을 때는, 엔트로피 풀이 아직 초기화되지 않았으면 블록 합니다.GRND_NONBLOCK플래그가 설정되면,getrandom()는 이럴 때 블록 하지 않고, 대신 즉시BlockingIOError를 발생시킵니다.Added in version 3.6.
- os.GRND_RANDOM¶
이 비트가 설정되면,
/dev/urandom풀 대신/dev/random풀에서 난수 바이트열을 얻습니다.Added in version 3.6.