본문 바로가기
Python/Python Advanced

5. Python - OS 모듈, system() 함수

by Rosmary 2020. 7. 1.
728x90
반응형

프로그래밍을 하다보면, 프로그래밍 동작에 필요한 설정 파일과 폴더를 만들어 동작시키는 과정에 이르는 때가 온다. 그리고, 프로그래밍의 동작에 따라, 특정 설정 파일이나 폴더가 이 생성되거나, 다른 경로로 이동하거나, 삭제되는 상황도 분명 존재할 것이다.

 

보통 이러한 파일 생성, 이동, 삭제 작업은 윈도우에서 제공하는 CMD(Command) 창의 명령어로 해결이 가능하다. 폴더의 생성으로 몇가지 예시를 들자면...

 

< dir 명령어 > 

현재 폴더에 존재하는 파일과 폴더 목록을 출력함

 

 

< mkdir 명령어 > 

현재의 경로에서 새 폴더를 생성

 

 

< rmdir 명령어 >

현재의 경로에 존재하는 폴더 삭제

 

 

...와 같은 명령어들이 있다.

 

그렇다면 Python으로 코딩을 하다가, 어떤 파일을 다른 곳으로 옮기거나, 삭제해야 하는 상황에서는 어떻게 코드를 작성하면 좋을까?(파일 생성에 대한 것은 여기를 참고하자). 예를 들어, 필자의 바탕화면에, "Hello World"라는 내용의 "test.txt" 파일이 존재하고, 이를 Python으로 다른 폴더로 옮기려고 한다고 가정해보자. 참고로 파일을 옮기는 cmd 명령어는 'move' 이다.

 

7월 1일자로 생성된 test.txt 파일이 마지막 줄에 보인다.

 

파일을 옮기기 위해서는 cmd의 명령어를 사용해야 한다. 하지만, python은 기본 모듈에 cmd 명령어를 인식할 수 있도록 설계되지 않았다. 즉, 다음과 같이 코딩을 하게 되면, 에러만 나타나는 것이다.

 

"move test.txt Program" 명령어는, 현재 폴더에 존재하는 test.txt 파일을 Programs 폴더로 옮기라는 명령어다. 

 

Python이 cmd의 명령어를 이해하고, 이를 cmd에 전달하도록 만들 수 있는 방법이 있다면 어떨까? 이를 위해 사용하는 것이 바로 os 모듈의 system() 함수다. os.system() 함수의 사용방법은 아래와 같다.

 

---------------------------------------------------------------------------------------------------------

import os

 

os.system("운영체제 명령어")   * 본 포스팅에서는 윈도우 운영체제를 사용한다, 즉 cmd 명령어

---------------------------------------------------------------------------------------------------------

 

 

os 모듈의 system()함수는 Python이 컴퓨터의 운영체제에게 명령어를 전달하기 위한, 일종의 번역기능을 한다고 이해하면 편하다. 만약, Python이 윈도우(리눅스)에 설치되어 있다면, system()함수를 이용하여 쉘 명령어인 "move(mv) test.txt Programs"를 전달하면 파일이 옮겨지는 것이다. 

 

 

파일의 이동 뿐만 아니라, 삭제도 가능하다. 이번에는 Programs 폴더 안에 있는 test.txt 파일을 system()함수로 삭제해보려한다. cmd에서 cd 명령어로 Programs 폴더로 이동한 뒤, python을 실행하고 system("erase test.txt") 코드로 파일을 삭제하면 된다.

 

 

os 모듈의 system() 함수는 파일 관련 명령어 뿐만 아니라, 기타 cmd 명령어의 실행도 가능하다. 예를 들어, cmd 창의 모든 글자를 지워버리는 cls명령어를 os.system()과 함께 사용하면, Python 인터렉티브 모드의 모든 글자가 깨끗하게 지워지는 것을 확인할 수 있다.

 

이 코드의 결과는 직접 확인해보자. 필자가 도저히 스크린샷을 이쁘게 찍지 못하게 결과가 나온다.

 

혹은 다음과 같이, 컴퓨터의 시스템 정보를 Python 인터렉티브 화면에서 출력하는 것도 가능하다.

 

 

 


 

 

이번 포스팅에서는, Python 모듈을 이용해, 운영체제의 명령어를 사용하는 방법에 대해 알아보았다. 그런데, 본 포스팅을 따라 연습하다보면 Python 인터렉티브 모드를 들락날락 거리는 것이 점점 귀찮게 느껴질 것이다. 그래서 os.system("cd ...") 명령어를 사용해서 파일을 이동하거나, 삭제하는 작업을 진행해보신 분들도 분명 존재할 것이고, 그 방법이 통하지 않는다는 것을 발견하신 분들도 존재할 것이다. 

 

다음 포스팅에서는 Python에서 현재 작업중인 폴더 경로를 이동하는 방법, 해당 폴더 내에 존재하는 파일 목록을 확인하는 방법에 대해 알아보려 한다.

 

 

FIN.

반응형

댓글