서론
- 일반적으로 프로그램을 만들 때 처음에는 가장 간단한 콘솔 프로그램으로 작성을 하게 된다.
그 뒤, GUI 프로그램을 작성하게 되는데 기능을 다 구현해놨음에도 불구하고 GUI 프로그램으로
변형하는 과정에서도 생각보다 많은 시간이 소요되며, 생각지 못한 오류에 수정작업까지 거치게 된다.
처음부터 GUI 프로그램을 만들 목적으로 체계적으로 코드를 작성해나간다면 좋겠지만,
경험이 부족한 관계로 결국 설계미스나 수정 과정을 면치 못한다.
그래서 생각한 것이 콘솔프로그램에서 GUI 프로그램으로 변형하는 것이 아니라 콘솔 프로그램은 콘솔 프로그램대로 놔두고, GUI 프로그램은 GUI에 관련된 코드들로만 작성하고 실제 기능은 콘솔 프로그램을 조작하는 방식으로 구현해보는 것은 어떨까라는 생각에 이르게 되었다.
본론
- 구글링을 열심히 해보았지만 프로그램간 의사소통은 멀티 스레딩이나 공유 메모리를 이용하라는 글이 대다수였다.
하지만 이는 결국 한 프로그램인 것이고, 별도로 동작하는 프로그램에서 명령어만 전달하고 싶은 나의 생각과는 사뭇 다르다.
예를 들어 콘솔로 입력을 받아 계산을 수행하는 프로그램 A가 있다고 해보자. 프로그램이 원하는 입력값을 사용자가 직접 콘솔창을 이용해 입력해줘야한다. 하지만 입력해야하는 것이 너무 많아 이를 자동화하고 싶다. 물론 프로그램을 뜯어 고쳐 파일을 읽어들인뒤 일괄 계산시키는 방법도 있겠지만 단순히 콘솔창 입력만 프로그램이 대신 쳐주기를 원하는 것이다. 여차할 땐 다시 직접 사용할 수 있도록.
- sys.argv
: cmd 창에서 test.py hello world 를 적게 되면, test.py를 실행하면서 test.py 내의 sys.argv 변수에 ["hello", "world"]가 입력된다. 이를 이용해 main.py에서 test.py에 명령어를 전달하고 싶다면 subprocess.run("test.py hello world", shell = True)를 사용할 수 있다.
- 파일을 이용한 명령어 전달
: main.py에서 실행하고 싶은 명령어들을 파일에 작성한 뒤, test.py를 실행시키면 test.py가 파일을 읽어들여 그에 맞는 명령어를 수행하는 방식이다.
위 두 방법들은 공통적으로 다음 로직이 존재해야한다.
- len(sys.argv) > 1 or (파일안에 명령어가 존재) 라면 사용자 입력 없이 일련의 명령어들을 수행
- 위 조건이 충족되지 않는다면 사용자 입력을 받아 프로그램이 동작
* 아직 작성중인 게시글입니다.
'파이썬' 카테고리의 다른 글
[파이썬] 와이파이 모듈 (ezwifi.py) (3) | 2021.03.26 |
---|---|
파이썬 GUI 만들기 (0) | 2021.01.25 |
비쥬얼 스튜디오 코드 (Visual Studio Code)에서 "No name 'QApplication' in module 'PyQt5.QtWidgets'" (0) | 2021.01.25 |
파이썬 GUI 구현 (PyQt5 vs tkinter) (0) | 2021.01.25 |
파이썬 모듈 설치 (PIP) 란 무엇인가 (0) | 2021.01.25 |