본문 바로가기
언어/Python

[Python 기본 공부정리] 13-2. 라이브러리(library)

by 민-Zero 2020. 1. 13.

공부 내용을 정리하는 목적 이므로 참고용으로만 읽어 주시기 바랍니다.

틀린 부분에 대한 지적은 감사합니다.

3. os

os라이브러리는 컴퓨터의 시스템 자원을 제어할 수 있게 도와주는 라이브러리다. 파일,디렉토리등의 추가 또는 제거를 수행하거나 환경변수, 시스템 명령어를 제어할 수 있게 한다. 해당 라이브러리의 함수들을 정리해 보자

 

① os.environ : 시스템의 환경 변수값 들을 보여주는 역할을 한다. 시스템의 정보를 딕셔너리 객체로 반환한다.

os.environ을 통해 현재 시스템의 환경 변수 값이 딕셔너리 객체로 반환되는 것을 확인할 수 있다. 현제 파이썬을 동작하기 위한 파이참도 등록되어 있는것을 확인할 수 있다.

딕셔너리 객체로 반환되기 때문에 딕셔너리의 기능을 사용할 수 있다. 따라서 위와 같이 사용하면 PATH와 관련된 내용만 확인할 수 있다.

 

②os.getcwd() : 자신의 현재 디렉토리의 위치를 돌려주는 역할을 한다.

현재 수행하고 있는 .py파일이 D:\PyCharm Community Edition 2018.3.2\Study 디렉토리에 있는것을 확인 할 수 있다.

 

③ os.chdir(경로) : changedirectory로 현재 디렉토리의 위치를 입력한 경로로 변경하는 함수이다.

getced()함수를 이용해 현재 위치가 D:\PyCharm Community Edition 2018.3.2\Study 디렉토리인 것을 확인했다. chdir을 통해 C드라이브의 루트위치로 변경하고 다시 현재 디렉토리의 위치를 확인하면 입력한 경로로 이동한 것을 확인할 수 있다.

 

④os.system("명령어") : 시스템의 유틸리티나 자체의 dos명령어 들을 파이썬에서 호출할때 사용한다.

chdir을 이용하여 디렉토리의 위치를 변경후 해당 디렉토리에서 cmd의 dir명령어를 통해 이동한 D:\에 있는 파일을 확인하였다.

 

⑤ os.popen : 시스템 명령어를 동작한 결과값을 읽기 모드의 파일 객체로 돌려준다.

open()함수를 사용할 때처럼 파일 객체로 돌려받게 된다.

파일 객체 이므로 파일 입출력시 사용했던 방법으로도 출력이 가능하다.

 

⑥ os.mkdir(경로) : 해당 경로에 디렉토리를 생성한다. 경로의 마지막 부분에 원하는 디렉토리명을 작성하면 되고 경로를 작성하지 않고 디렉토리명만 작성할 경우 현재위치에 생성된다.

따로 경로를 작성하지 않았으므로 현재 동작중인 디렉토리에 원래 없던 test라는 디렉토리가 생성된것을 확인할 수 있다.

 

⑦ os.rmdir(경로) : 해당 경로에있는 디렉토리를 삭제한다. 단, 디렉토리가 비어있지않으면 에러를 발생한다.

아까 생성한 test라는 디렉토리를 rmdir함수를 통해 삭제한 모습이다.

 

만약 해당 디렉토리안에 하나의 파일이라도 존재한다면

위와 같이 에러를 발생시킨다.

 

⑧ os.unlink(경로) : 해당 경로의 파일을 지운다.

예를 들어 파이썬이 동작중인 디렉토리 안에 RemoveThis 라는 텍스트 파일이 존재한다고 하자.

그러면 unlink명령어를 사용해 원하는 파일명을 작성할 경우 해당 파일이 제거된다. 다른 경로안에 파일이 있을경우 경로와함께 파일명을 작성해주어야 한다.

 

⑨ os.rename(source, destination) : source 이름의 파일을 destination 이름으로 바꾼다.

rename함수를 사용해 src.txt파일을 dst.txt파일로 이름으 변경할 수 있다.

 

4. shutil

해당 라이브러리는 파일과 폴더에 관련된 라이브러리로 파일이나 디렉토리를 복사하거나 삭제하는등 관리를 위한 기능을 가진 라이브러리이다.

 

①shutil.copy(src, dst) : 파일이나 디렉토리를 복사하는 함수로 src라는 이름의 파일을 dst로 복사한다. dst가 파일이라면 dst에 작성한 파일명 그대로 복사되고 dst가 디렉토리면 src라는 파일 이름으로 dst 디렉터리에 복사하고 동일한 파일 이름이 있을 경우에는 덮어쓴다.

 

예시를 통해 확인해 보자.

다음과 같이 파이썬이 동작할 디렉토리에 src.txt파일이 존재하고 해당 파일에는 Hello! 라는 내용이 담겨있다.

copy()함수를 사용해 src.txt라는 파일을 copy_test.txt라는 파일로 복사하도록 하였다. 따라서 src안에 있는 내용까지 모두 복사된 것을 확인할 수 있다.

 

dst가 경로인 경우를 확인해보기 위해 해당 경로에 Test라는 빈디렉토리를 생성하였다.

따라서 copy함수를 사용하게 되면 해당 경로에 copy_test.txt라는 파일이 복사되는 것을 확인할 수 있다.

만약 경로만 입력하고 복사할 파일명을 작성하지 않는다면 복사대상파일명 그대로 복사되는것을 확인할 수 있다.

 

② shutil.rmtree(경로) : 디렉토리 및 파일을 모두 지울수 있다. rmdir과 다르게 파일이 존재해도 에러를 발생시키지 않기때문에 간편할 수 있지만 굉장히 위험하다.

 

copy함수를 연습하며 만든 Test라는 디렉토리는 2개의 텍스트 파일을 가지고 있다. 

위와 같은 코드를 통해 해당 디렉토리를 삭제하도록 하면 rmdir과 다르게 아무런 에러없이 바로 삭제되는것을 확인할 수 있다.

 

5. glob

glob 라이브러리는 디렉토리에 있는 파일들을 리스트로 만들때 사용한다.

예를들어 파일을 관리하는 프로그램을 제작한다고 하자. 그때 프로그램내에서 특정 디렉토리에 있는 파일명을 다 알아야 할 경우가 생긴다. 자신의 컴퓨터 환경이라면 특정 디렉토리를 찾아가 파일명을 확인하면 되지만 외부 사용자가 프로그램을 쓴다면 파일명을 알 수 없다. 이와 같은 경우에 유용하게 사용되는 라이브러리다.

 

① glob.glob(경로) : 해당 경로의 디렉토리안의 모든 파일을 리스트에 담아 반환해준다. 메타문자 *, ? 등을 함께 사용하여 확인한다.

 

다음의 예시를 통해 확인하자.

이와같이 Study라는 디렉토리안의 confirm 디렉토리에 다음과 같은 파일들이 존재한다고 하자.

이때 모든것을 뜻하는 *를 경로에 붙이면 해당 경로에 존재하는 모든 파일을 확인할 수 있다.

위와 같이 사용한다면 A로 시작하는 모든 파일을 뜻하므로 A로 시작하는 모든 파일을 출력해 준다.

 

리스트 객체로 값을 반환해 주기때문에 인덱스를 이용해 하나씩 접근하는것 또한 가능하다.

댓글