Python OS 모듈은 우리에게 운영 체제 정보를 가져오고 프로세스를 제한적으로 제어할 수 있는 간편한 기능을 제공합니다.
Python OS 모듈
OS 모듈의 함수들은 Windows 플랫폼, Macintosh 또는 Linux와 관계없이 운영 체제의 기본 작업을 수행할 수 있도록 해줍니다. 이 레슨에서는 이러한 함수들과 그들이 제공하는 정보를 살펴보겠습니다. 이러한 함수들과 그들이 제공하는 정보로 여행을 시작해 봅시다.
Python import os
먼저 우리 프로그램에서 OS 모듈을 import해야만 그 어떤 함수들도 실행할 수 있음을 유의해 주세요.
os.name
이 함수는 가져온 OS 모듈의 이름을 제공합니다. 이는 기반 운영 체제에 따라 다릅니다. 현재 ‘posix’, ‘os2’, ‘ce’, ‘nt’, ‘riscos’ 및 ‘java’를 등록합니다. 시스템에서 이를 실행해 봅시다:
>>> print(os.name)
posix
분명히 이는 해석기에 따라 다른 플랫폼을 출력할 수 있습니다.
os.environ
environ
은 함수가 아니라 시스템의 환경 변수에 액세스할 수 있는 프로세스 매개변수입니다. 샘플 코드 스니펫을 확인해 봅시다:
import os
output = os.environ['HOME']
print(output)
이 스크립트를 실행하면 다음이 출력됩니다: 환경 변수와 함께 작업하기 위해 이를 사용할 수 있으며, 자세한 내용은 Python 환경 변수 설정에서 확인할 수 있습니다.
os.execvp
execvp
함수는 시스템에서 다른 명령을 실행하는 방법 중 하나입니다. 이 함수에 대한 샘플 코드 스니펫을 확인해 봅시다:
import os
program = "python"
arguments = ["hello.py"]
print(os.execvp(program, (program,) + tuple(arguments)))
이를 위해 다음과 같은 코드로 hello.py
라는 샘플 스크립트를 만들었습니다:
print('Hello')
이 스크립트를 실행하면 다음과 같은 출력이 됩니다:
os.getuid
이 os 모듈 함수는 현재 프로세스의 사용자 ID 또는 UID를 반환합니다. 이는 보통 UID로 알려져 있습니다.
>>> os.getuid()
501
따라서 현재 쉘 프로세스 ID는 501입니다.
os.rename
파이썬 os rename 함수를 사용하면 파일 이름을 쉽게 변경할 수 있습니다.
import os
fileDir = "JournalDev.txt"
os.rename(fd,'JournalDev_Hi.txt')
이를 위해 스크립트에 올바른 권한을 제공해야 합니다.
os.system
파이썬 os system 함수를 사용하면 Python 스크립트에서 명령을 실행할 수 있습니다. 마치 내 쉘에서 실행하는 것처럼 말이죠. 예를 들면:
import os
currentFiles = os.system("users > users.txt")
이 스크립트를 실행하면 동일한 디렉토리에 ‘users.txt’라는 새 파일이 만들어지며 내용은 ‘shubham’입니다. 이는 원래 쉘에서 반환된 것과 같습니다: 이는 매우 강력한 명령이므로 신중하게 사용해야 합니다.
os.error
Python의 os 모듈 오류 클래스는 I/O 관련 오류의 기본 클래스입니다. 따라서 except 절에서 OSError를 사용하여 I/O 오류를 잡을 수 있습니다.
import os
try:
f = open('abc.txt', 'r') # file is missing
except OSError:
print('Error')
os.getpid
이 함수는 현재 프로세스 ID 또는 PID를 반환합니다. 일반적으로 PID로 알려져 있습니다.
>>> os.getpid()
71622
따라서 현재 쉘 프로세스의 사용자 ID는 71622입니다.
os.listdir
이 함수는 현재 작업 디렉토리에 있는 파일과 디렉토리를 나열합니다.
>>> import os
>>> os.listdir()
['.DS_Store', '.localized', 'JournalDev', 'Java', 'Python']
이는 디렉토리와 파일 이름의 반복 가능한 리스트를 반환합니다.
os.uname
이 함수는 현재 실행 중인 운영 체제를 식별하는 정보를 반환합니다.
>>> os.uname()
posix.uname_result(sysname='Darwin', nodename='Shubham.local', release='17.2.0', version='Darwin Kernel Version 17.2.0: Fri Sep 29 18:27:05 PDT 2017; root:xnu-4570.20.62~3/RELEASE_X86_64', machine='x86_64')
정말로 자세히 설명되었습니다.
import os.path vs import os
os.path
실제로는 이상하게 작동합니다. os
는 path
와 함께 패키지화된 것처럼 보이지만 사실은 os
는 os.path
를 지원하기 위해 sys.module
과 함께 작동하는 일반적인 모듈입니다. 아래에서 일어나는 일들을 나열해 보겠습니다:
- Python이 시작되면 많은 모듈이
sys.module
에 로드됩니다. os
모듈도 Python이 시작될 때 로드됩니다.os
는path
를os
의 특정 모듈 속성에 할당합니다.sys.modules['os.path'] = path
를 주입하여 마치 서브모듈인 것처럼import os.path
를 수행할 수 있게 합니다.
요약
이 레슨에서는 Python의 OS 모듈이 제공하는 다양한 함수들과 그 작동 방식에 대해 알아보았습니다. Python 여기에서 더 많은 레슨을 참조하세요. 참고: API 문서
Source:
https://www.digitalocean.com/community/tutorials/python-os-module