티스토리 뷰

모든 프로그래밍은 입력과 출력이 매우 중요합니다. 이번에 포스팅할 주제는 파이썬을 이용하여 기본 입출력부터 파일을 읽고 또 파일을 통해 출력하는 방법에 대해 포스팅하도록 하겠습니다.

파이썬 입력
1. 키보드로 입력받기
 1-1. 입력받기 기본
 1-2. 입력받은 데이터 형식 바꾸기
2. 파일 읽기
 2-1. read, readline함수
 2-2. with문으로 파이썬스러운 입력받기

키보드로 입력받기

프로그래밍 입력받는 방법 중 가장 간단한 방법은 사용자에게 키보드로 입력받는 방법입니다. 사용자에게 입력을 받아 조건에 맞는 프로그래밍을 작성하기 위해서 가장 첫 번째로 해야 하는 것은 입력을 어떻게 처리하느냐입니다. 파이썬은 기본적으로 입력받는 데이터 형식이 모두 문자형(String)입니다. 이번 기회에 키보드 입력과 입력을 처리하는 방법에 대해 모두 알아보겠습니다.

  • 파이썬의 입력 데이터는 모두 문자(String)로 처리됨
  • 입력 데이터를 원하는 타입으로 가공이 필요

입력받기 기본

파이썬에서 키보드로 입력을 받을 때,  input함수를 이용하여 입력을 받습니다. 바로 예시를 통해 보여드리겠습니다.

name = input()

 위와 같이 작성하면 키보드로 입력받는 과정이 모두 끝이 납니다. 너무 간단하죠? 하지만 위처럼 입력을 받게 되면 사용자가 어떻게 입력을 받는지 알기가 어렵습니다. 이제 아래처럼 추가하여 조금 더 보도록 하겠습니다.

name = input("이름을 입력하세요: ")
실행결과
이름을 입력하세요 : 

 위의 형식으로 수정을 하면 '이름을 입력하세요'라는 메시지를 사용자에게 알려줄 수 있습니다. 그러면 사용자는 '아! 이름을 입력하라는 뜻이구나'로 이해하고 이름을 입력하게 됩니다.

입력받은 데이터 형식 바꾸기

파이썬에서 입력은 모두 문자열로 입력받는다고 말씀드렸었습니다. 즉, 숫자로 입력을 주더라도 파이썬에서는 숫자로 받아들이지 못하고, 문자로 받아들이게 됩니다.

#1
num1 = input("첫 번째 숫자를 입력하세요 : ")
num2 = input("두 번째 숫자를 입력하세요 : ")
sum = num1 + num2
print(sum)

#2
var1 = input("문자를 입력하세요 : ")
var2 = input("문자를 입력하세요 : ")
sum = var1 + var2
print(sum)
#1 실행결과
첫 번째 숫자를 입력하세요 : 3
두 번째 숫자를 입력하세요 : 5
35

#2 실행결과
문자를 입력하세요 : 우리
문자를 입력하세요 : 동네
우리 동네

#1번 예시를 먼저 보겠습니다. 첫 번째 숫자 3과 두 번째 숫자 5를 입력해서 sum이라는 변수에 더해서 저장하는 프로그램을 작성했습니다. 그런데 3+5가 8이 아니라 35가 출력되었습니다. 즉, 파이썬은 3과 5를 숫자로 인식하지 않고, 문자로 이해하고 있습니다. 때문에 3과 5를 붙여버린 것입니다.

#2번 예시를 통해 확실히 이해가 가능할 것입니다. "우리"라는 문자와 "동네"라는 문자를 더하기 연산을 취하면, "우리""동네"라는 글자가 붙어서 출력됩니다.

그렇다면 파이썬에게 어떻게 숫자로 입력을 이해시킬 수 있을까요? 방법은 아래와 같습니다.

#3
num1 = int(input("첫 번째 숫자를 입력하세요 : "))
num2 = int(input("두 번째 숫자를 입력하세요 : "))
sum = num1 + num2
print(sum)
#3 실행결과
첫 번째 숫자를 입력하세요 : 3
두 번째 숫자를 입력하세요 : 5
8

이제 저희가 원하는 결과인 8이 얻어졌습니다! 파이썬에게 입력을 숫자로 이해시키는 방법은 바로 int라는 정수형 변수를 사용한다고 선언해주었기 때문입니다. 즉, 입력받은 데이터를 int()로 감싸 문자를 정수로 바꾸어 주었습니다. 이러한 방법으로 파이썬 입력 데이터를 바꿀 수 있습니다.

파일 읽기

입력받는 또 다른 방법은 파일을 입력으로 읽어 들이는 방식이 있습니다. 데이터 처리를 하는 경우에는 수많은 데이터가 파일에 저장이 되어있는데, 이를 프로그래밍을 통해 읽어 빠르게 처리할 수 있습니다. 이때, 바로 파일 읽기를 사용합니다. 방법은 open함수를 이용하여 처리할 수 있습니다.

  • open 함수를 이용하여 파일을 읽을 수 있다
#f = open('File_name', 'mode')
f = open('데이터.txt', 'r')

파이썬은 위와 같은 방법으로 파일 읽기 함수를 사용할 수 있습니다. 즉, open함수 내에 읽어 들일 파일 명과 읽기 모드 'r'을 설정하여 f라는 객체에 파일의 내용을 읽어 들입니다. 아래와 같은 파일을 읽고 실행해보겠습니다.

"데이터. txt" 파일 내용
가나다 35세 서울
라마바 27세 경기
사아자 29세 대전
차 카파 32세 강원

파일을 객체 f에 불러왔으니, 읽는 방법에 대해 말씀드리겠습니다. 파일 읽기는 두 가지 방법으로 읽을 수 있습니다. read함수와 realine함수입니다. 두 가지 차이점이 무엇일까요?

  • read() : 읽은 데이터가 모두 변수에 할당하여 처리
  • readline() : 읽은 데이터를 한 줄씩 처리
  • readlines() : 데이터를 모두 읽고, 한 줄 씩 리스트로 저장
#1
f = open('데이터.txt', 'r')
text = f.read()
print(text)
f.close()

#2
f = open('데이터.txt', 'r')
line = f.readline()
print(line)
f.close()

#3
f = open('데이터.txt', 'r')
line = f.readlines()
print(line)
f.close()
#1 실행결과
가나다 35세 서울
라마바 27세 경기
사아자 29세 대전
차카파 32세 강원

#2 실행결과
가나다 35세 서울

#3 실행결과
['가나다 35세 서울\n', '라마바 27세 경기\n',  '사아자 29세 대전\n', '차카파 32세 강원\n' ]

두 함수의 차이가 어떤 것인지 보이시나요? read함수는 읽은 데이터를 한 번에 처리하는 반면 readline은 한 줄씩 처리하고 있습니다. 즉, readline은 커서가 한 줄 씩 이동하면서 데이터를 읽는다고 생각하면 됩니다. 마지막으로 readlines는 모든 데이터를 읽고 개행(n)을 기준으로 하나의 데이터씩 끊어, 리스트형태로 저장합니다. 

"데이터. txt" 파일 내용
가나다 35세 서울 (#2 가상의 커서)
라마바 27세 경기 (#3 가상의 커서)
사아자 29세 대전
차카파 32세 강원

with문으로 파이썬스러운 입력받기

파일을 읽는 함수를 open함수로 받았습니다. 이를 with를 사용하여 파이썬스럽게 바꾸어보겠습니다

#1
f = open('데이터.txt', 'r')

#2
with open('데이터.txt', 'r') as f

위 두 구문은 모두 같은 역할을 합니다. 하지만 아래 #2번코드가 조금 더 파이썬스러운 코드입니다. 앞으로 많은 포스팅에서 위와 같이 활용하는 모습을 많이 확인하실 수 있습니다. 여러분들께서도 '이렇게 파일 입력을 받을 수 있고, 파이썬스러운 코드가 이런 거구나'라고 이해만 하고 넘어가시면 될 것 같습니다.

댓글
공지사항