알고리즘 INPUT값 TXT 파일로 입력하기
알고리즘 문제를 풀면서 생긴 귀찮은 점은 바로 입력값이 존재하는 문제(거의 모든 문제)의 경우 입력값을 매 실행 때마다 입력해줘야 한다는 것입니다. 제가 이용하는 알고리즘 문제 사이트는 프로그래머스와 백준이 있는데 프로그래머스의 경우 그나마 괜찮은데 백준의 경우 매 채점마다 시간이 은근히 오래 걸렸습니다.
하지만 불편했을 뿐 정확히 인식을 못하는 문제였기 때문에 문제를 채점할 때마다 노가다를 하고 있었는데요. 우연히 Visual Studio Code(VSC)를 이용해서 이 문제를 해결할 수 있는 방법을 알게 됐습니다.
하지만 저는 VSC를 사용하지 않고 Gedit을 이용해서 터미널에서 실행하는 방식으로 사용하고 있었고 위 방법이 리눅스 명령어를 바탕으로 한 방법이라기에 방법을 찾았습니다. 다행히 나름 쉽게 찾을 수 있었고 저처럼 무의식 중에 힘들지만 노가다를 하고 있었던 분들을 위해서 방법을 공유합니다.
첫 번째 방법 : Visual Studio Code 디버그를 이용하기
윈도우나 리눅스 어떤 것을 사용해도 VSC는 많이 사용하실 겁니다. 이 VSC를 이용해서 위 문제를 해결해보겠습니다.
일단 VSC를 실행합니다.
test.py 파일을 생성하여 간단하게 출력해보겠습니다. 아래 TERMINAL 창을 통해서 hello world가 출력된 것을 확인할 수 있습니다.
하지만 이 방법으로 하지 않고 디버그 기능을 이용할 겁니다. 디버그 모드로 진입하는 단축키는 아래와 같습니다.
윈도우, 리눅스 : Ctrl + Shift + D
맥 : Command + Shift + D
위 단축키를 누르면 왼쪽에 아래와 같이 디버그 창이 열립니다.
Run and Debug 버튼을 누르면 가운데 목록이 뜨고 Python File을 눌러줍니다.
이번에는 Run and Debug 버튼 아래에 있는 To customize Run and Debug create a launch.json file에서 파란색으로 된 부분을 눌러 json 파일을 생성해줍니다.
생성된 json 파일은 다음과 같습니다.
우리는 다음과 같이 한 문장을 추가해 줍니다. "<"가 입력값을 넣는다는 뜻이라고 합니다. 다음 input.txt 파일은 임의로 원하는 파일명을 입력하면 됩니다.
아래 사진과 같이 왼쪽 탭에서 가장 상단 탭(EXPLORER)에서 위의 파일명대로 input.txt 파일을 생성해줍니다.
이번에는 bye world 를 입력해서 이 input.txt 파일에 입력한 값을 잘 출력하는지 확인할 겁니다.
다시 test.py로 돌아와서 input()을 받아서 출력해봅시다. 원래라면 input값을 받기 위해 터미널에서 입력 대기를 하겠지만 지금은 input.txt 파일을 input() 값으로 받기 때문에 따로 입력 대기가 없습니다.
다시 (윈도우, 리눅스 기준) Ctrl + Shift + D를 눌러 디버그 탭으로 가서 디버그 메뉴의 왼쪽 상단에 있는 초록색 화살표를 클릭해 디버그를 실행해 봅니다. 다른 입력을 전혀 안 했지만 input.txt에 입력한 대로 bye world를 제대로 출력하는 것을 확인했습니다.
출력 값을 콘솔에 출력하지 않고 출력 값을 담은 파일을 만들기 위해 다시 json 파일로 돌아가서 드래그된 부분을 추가합니다. ">" 부분이 파일을 출력한다는 뜻으로 보입니다. output.txt의 경우 임의로 파일명을 변경하시면 됩니다.
(윈도우, 리눅스 기준) Ctrl + Shift + D를 눌러 디버그 탭에서 다시 디버그를 실행한 후 콘솔에 출력 값이 없는 것을 확인하고 EXPLORER로 돌아가 파일 목록을 확인해보니 output.txt 파일이 생성된 것을 확인할 수 있습니다. 파일을 열어 확인하니 정상적으로 bye world가 입력돼있습니다.
코딩하는 동안 input값과 output값을 확인하기 쉽게 셋팅하기위해 test.py(메인 코드 파일)을 열고 가운데 열린 탭들 중에서 input.txt를 다음과 같이 화면 오른쪽으로 드래그합니다.
다음은 output.txt파일을 오른쪽 아래로 드래그합니다.
최종적으로 이렇게 세팅한 후 코딩하면 입력값을 매번 입력하지 않고 테스트해볼 수 있습니다.
두 번째 방법 : 리눅스 명령어 사용하기
Pycharm이나 VSC 등 IDE를 사용하지 않고 저처럼 메모장으로 코딩하시는 분들을 위한 방법입니다. 간단한 리눅스 명령어를 통해서 해결할 수 있었습니다.
# input.txt 파일에서 입력값 받아서 터미널에서 결과값 출력
$ cat input.txt | python3 test.py
# input.txt 파일에서 입력값 받아서 output.txt 파일에 출력하여 저장
$ cat input.txt | python3 test.py > output.txt
저는 터미널에서 zsh를 이용하고 있는데 '<'를 이용하는 방법을 못 찾았습니다. 기본 터미널에서는 '<'와 '>' 둘 다 이용 가능한 것으로 보이는데 왜 안 되는 건지 모르겠습니다.
더 좋은 방법이 있다면 공유 부탁드려요.
'컴퓨터 > 리눅스(우분투)' 카테고리의 다른 글
git pull error (0) | 2023.02.24 |
---|---|
깃허브 데스크탑, Github desktop 리눅스에서 사용하기 (0) | 2021.08.17 |
Failed - Insufficient permissions 크롬 파일 다운로드 불가 현상 (0) | 2020.10.02 |
'System Program Problem Detected' 팝업 문제 해결하기 (0) | 2020.09.18 |
우분투에서 크롬 실행시 keyring 묻는 팝업 창 해결?법 (0) | 2020.09.07 |
댓글