
우리가 어떤 작업을 프로그래밍 하고자 할 때 다양한 방법으로 데이터를 입력하고 출력할 수 있습니다. 키보드로부터 입력을 받아 파일로 출력한다거나, 파일로 데이터를 입력받아 모니터로 확인하고 다시 파일로 출력하는 작업들이 일반적입니다. 이 또한 앞서 언급된 Open Library를 이용하여 다양한 방법으로 입출력이 가능합니다만 오늘은 파이썬에서 가장 일반적으로 사용되는 입출력 방법을 살펴봅니다.
iput() 명령어를 이용하여 사용자가 입력한 값을 변수에 넣는 가장 간단한 방법입니다.
>>> a = input()
You need Python
>>> a
'You need Python'
>>> print(a)
You need Python
>>> a=input('숫자입력 : ')
숫자입력 : 123
>>> a
‘123’
input()으로 입력을 받게 되면 숫자, 문자를 모두 문자열로 변형하여 a 변수에 입력하게 됩니다. 정수형 숫자로 입력을 받으려면 input()과 함께 int()를 이용합니다.(실수형은 float())
>>> a = int(input())
123
>>> a
123
차이점을 알아야 합니다.^^
input()이 가장 일반적인 입력 방법이라면, print()는 가장 일반적인 출력 방법입니다.
>>> print('Python is easy')
Python is easy
>>> print('Python'+'is’’easy')
Pythoniseasy
>>> print('Python','is','easy')
Python is easy
문자열과 문자열 사이 + 연산자는 의미가 없으며, 띄어쓰기는 ,(콤마)로 합니다.
>>> for i in range(3):
... print( i )
... ^Z
0
1
2
>>> for i in range(10):
... print( i, end='')
... ^Z
0123456789>>>
end='' 는 출력값을 옆으로 하는 매개변수입니다.
지금까지 키보드로 입력받아 모니터로 출력하는 형태의 입출력을 알아보았습니다. 하지만 대용량의 데이터를 키보드로부터 입력받아 우리가 원하는 형태로 가공 또는 연산 작업 후 출력할 때는 불편한 방법이겠죠? 이제는 파일을 이용한 입출력 방법에 대해 알아보겠습니다.
파일 객체 = open(파일 이름, 파일 열기 모드)의 형태로 이용합니다.
f = open( 'test.txt', 'w')
f.close()
위와 같이 실행하게 되면 test.txt가 생성되는 것을 볼 수 있습니다.

f.close()는 열려있는 파일 객체를 닫아 주게 됩니다.
파일 열기 모드는 다음과 같습니다.
모드
|
설명
|
r
|
읽기 모드 - 파일을 읽을 때만 사용
|
W
|
쓰기 모드 - 파일에 내용을 쓸 때 사용
|
a
|
추가 모드 - 파일의 마지막에 새로운 내용을 추가할 때 사용
|
새 파일의 생성 위치도 디렉터리(directory) 설정에 따라 변경할 수 있습니다.
f = open('c:/python_code/test1.txt','w')
f.close()
C:/python_code/test1.txt 파일을 만들게 됩니다.
f=open('text.txt','w')
for i in range(1,4):
data = '%d 번째 줄입니다.\n' % i
f.write(data)
f.close
for i in range(1,4):
data = '%d 번째 줄입니다.\n' % i
print(data)
1번째 줄입니다.
2번째 줄입니다
3번째 줄입니다
라고 화면에 출력된 내용이 text.txt 파일에 그대로 기록되어 있습니다.
외부 파일을 열어 읽어올 때 readline() 함수 사용에 대해 알아봅니다.
f = open('text.txt','r')
line = f.readline()
print(line)
f.close()
1번째 줄입니다.
라고 출력됩니다. text 파일 내용 모두를 읽어오고 출력할 때는 다음과 같이 반복문을 사용하면 쉽게 해결됩니다.
f = open('text.txt','r')
while True:
line = f.readline()
if not line : break
print(line)
f.close()
while True는 무한 루프를 돌기 시작하지만 if not line(파일의 끝)의 조건에 부합하면 break로 루프를 빠져나오게 되며, 파일을 닫게 됩니다. 파일의 끝에서 readline() = None을 가지게 됩니다.
readline()은 파일을 한 줄씩 문자열로 읽는다면, readlines()는 파일 전체를 읽어 각줄의 요솟값을 리스트 형태로 돌려줍니다.
readline()와 readlines()는 다르게 사용되는 점 유의하세요~! (한 끗 차이가 전혀 다른 결과를 불러옵니다!!!)

readlines()가 파일 전체를 line 별 리스트로 만든다면, read()는 파일 내용 전체를 문자열로 만들어 줍니다.

함수
|
설명
|
readline()
|
한 줄씩 읽은 값을 문자열로 돌려준다.
|
readlines()
|
파일 전체를 한 줄씩 읽은 다음 리스트에 담에 돌려준다.
|
read()
|
파일 전체를 문자열로 돌려준다.
|
파일에 새로운 내용을 추가할 때는 'w'가 아닌 'a'를 사용합니다.
'w'로 파일을 열 때 기존 파일이 존재하게 되면 그 파일의 내용이 모두 지워지게 됩니다. 원래 파일의 있던 값을 유지하며 새로운 값을 추가할 때는 'a'를 사용합니다.

추가로 세 줄이 기록된 것을 알 수 있습니다. with 문을 함께 사용하면 with 블록을 벗을 날 때 파일을 자동으로 닫을 수 있습니다.
with open ('text.txt','w') as f:
f.write('Pythone is easy')
좀 더 간결해 보이지 않나요?
'코딩 이야기 > 파이썬(Python)' 카테고리의 다른 글
단도직입 파이썬(Python) – 모듈(Module) (0) | 2021.12.16 |
---|---|
단도직입 파이썬(Python) – 클래스(class) (0) | 2021.12.16 |
단도직입 파이썬(Python) – 함수 function (0) | 2021.12.15 |
단도직입 파이썬(Python) – 반복문 (while, for) (0) | 2021.12.15 |
단도직입 파이썬(Python) – 조건문 (if ~ else) (0) | 2021.12.15 |
댓글