표준 입력받기: input()
answer = input('아무 값이나 입력하세요 : ')
print('입력한 값은'+answer+'입니다.')
input()을 받았을 때는 type이 str이기때문에 정수형을 사용하려면 type을 바꿔야한다.
표준 출력 시 유용한 기능
구분자 넣기: sep
print() 함수에 sep 매개변수 기본 값은 공백(' ')이다.
기본값 대신 다른 값을 넣어 print() 함수를 실행하면 해당 값을 구분 기호로 사용한다.
print('파이썬', '자바')
print('파이썬', '자바', sep=',')
문장 끝 지정하기: end
print() 함수를 2개 이상 연속해서 사용하면 각각 다른 줄에 실행결과를 출력한다.
이 때 end에 다른 값을 넣어 주면 문장 끝을 줄 바꿈 대신 지정한 값으로 바꿀 수 있다.
print('파이썬', '자바', sep=',', end='? ')
print('무엇이 더 재미있을까요?')
출력 위치 지정하기: file
file은 print() 문의 실행결과를 어디에 출력할지 지정하는 기능이다.
import sys
print('파이썬', '자바', file=sys.stdout)
print('파이썬', '자바', file=sys.stderr)
첫 번째 값 sys.stdout은 표준 출력(Standard Output)을 나타내며, 터미널에 결과를 출력하라는 뜻이다.
두 번째 값 sys.stderr은 표준 오류(Standard Error)를 나타내며, 오류가 발생했을 때 터미널에 오류 메시지를 띄우라는 것이다.
공간 확보해 정렬하기: ljust()와 rjust()
scores = {'수학': 0, '영어': 50, '코딩': 100}
for subject, score in scores.items():
print(subject.ljust(8), str(score).rjust(4), sep=':')
함수명의 첫 글자 l과 r은 각각 왼쪽(left)과 오른쪽(right)을 의미한다.
두 함수에 숫자를 넣어 전달하면 숫자 값만큼 미리 공간을 확보하고 해당 공간에서 왼쪽 정렬 또는 오른쪽 정렬을 수행한다. 이 때 정렬하는 값은 문자열이여야 한다.
빈칸 0으로 채우기: zfill()
for num in range(1, 21):
print('대기번호 : ' + str(num).zfill(3))
zfill() 함수는 전달하는 숫자만큼 공간을 확보하고 문자열의 앞의 빈칸을 zero, 0으로 채웁니다.
파일 입출력
파일 열고 닫기: open(), close()
open('파일명', '모드', encoding='인코딩 형식'
모드 | 의미 | 설명 |
r | 읽기(read) | 파일 내용을 읽어 오기 위한 모드 |
w | 쓰기(write) | 파일에 내용을 쓰기 위한 모드, 같은 이름의 파일이 있으면 해당 파일을 덮어 써서 기존 내용은 삭제됨 |
a | 이어쓰기(append) | 파일에 내용을 쓰기 위한 모드, 같은 이름의 파일이 있으면 기존 내용 끝에 이어서 씀 |
# score.txt 파일을 쓰기 모드로 열기
score_file = open('score.txt', 'w', encoding='utf8')
print('수학 : 0', file=score_file) # score.txt 파일에 내용 쓰기
print('영어 : 50', file=score_file) # score.txt 파일에 내용 쓰기
score_file.close() # score.txt 파일 닫기
파일 쓰기: write()
쓰기 모드로 열면 파일을 덮어 쓰므로 이어 쓰기 모드(a)로 열어서 작성한다.
# score.txt 파일에 이어 쓰기 모드로 열기
score_file = open('score.txt', 'a', encoding='utf8')
# write() 함수는 줄 바꿈이 없으므로 \n 추가
score_file.write('과학 : 80\n')
score_file.write('코딩 : 100\n')
score_file.close() # score.txt 파일 닫기
파일 읽기: read(), readline(), readlines()
# score.txt 파일을 읽기 모드로 열기
score_file = open('score.txt', 'r', encoding='utf8')
print(score_file.read())
score_file.close() # score.txt 파일 닫기
read() 함수는 파일 내용 전체를 한 번에 읽어 오는 함수다.
한 줄씩 끊어서 읽어오는 함수는 readline()을 사용하면 된다.
# score.txt 파일을 읽기 모드로 열기
score_file = open('score.txt', 'r', encoding='utf8')
print(score_file.readline(), end='') # 한 줄씩 읽어 오고 커서는 다음 줄로 이동
print(score_file.readline(), end='') # end 값을 설정해 줄 바꿈 중복 수행 방지
print(score_file.readline(), end='')
print(score_file.readline(), end='')
score_file.close() # score.txt 파일 닫기
대부분 파일은 직접 열어보기 전까지 총 몇 줄인지 알 수 없다.
그래서 while문을 통해 파일에 내용이 남아있는 동안 반복해서 읽어올 수 있다.
score_file = open('score.txt', 'r', encoding='utf8')
while True:
line = score_file.readline()
if not line:
break
print(line, end='')
score_file.close()
비슷한 방법으로 파일 내용을 한꺼번에 불러와서 리스트에 저장해 두고 리스트를 반복하면서 내용을 출력할 수도 있다.
이 때는 readlines() 함수를 사용한다.
score_file = open('score.txt', 'r', encoding='utf8')
lines = score_file.readlines() # 파일에서 모든 줄을 읽어 와 리스트 형태로 저장
for line in lines: # lines에 내용이 있을 때 까지
print(line, end='')
score_file.close()
함수 | 설명 |
read() | 파일 내용을 한꺼번에 읽어 오기 |
readline() | 파일 내용을 한 줄씩 읽어 오기 |
readlines() | 파일 내용을 줄 단위로 나뉜 리스트 형태로 한꺼번에 읽어 오기 |
데이터를 파일로 저장하기: pickle 모듈
pickle 모듈로 데이터를 파일에 저장할 때 dump()라는 함수를 사용한다.
첫 번째 전달값으로는 저장할 데이터를, 두 번째 전달값으로는 데이터를 저장할 파일을 넣는다.
dump(저장할 데이터, 저장할 파일명)
picke 모듈로 저장하는 파일은 텍스트가 아닌 바이너리 형태이다.
바이너리 파일: 컴퓨터가 인식할 수 있는 이진수(0과 1)로 이루어진 파일로, JPG, PNG 같은 이미지 파일, MP3와 같은 음악 파일, EXE와 같은 실행 파일 등이 해당한다.
import pickle
profile_file = open('profile.pickle', 'wb') # 바이너리 형태로 저장
profile = {'이름': '스누피', '나이': 30, '취미': ['축구', '골프', '코딩']}
print(profile)
pickle.dump(profile, profile_file) # profile 데이터를 파일에 저장
profile_file.close()
pickle파일을 다시 불러올 때는 load() 함수를 사용하고 전달값으로 파일명을 넣는다.
load(불러올 파일명)
import pickle
profile_file = open('profile.pickle', 'wb') # 바이너리 형태로 저장
profile = {'이름': '스누피', '나이': 30, '취미': ['축구', '골프', '코딩']}
print(profile)
pickle.dump(profile, profile_file) # profile 데이터를 파일에 저장
profile_file.close()
profile_file = open('profile.pickle', 'rb') # 읽어 올 때도 바이너리 형태 명시
profile = pickle.load(profile_file) # 파일에 있는 정보를 불러와서 profile에 저장
print(profile)
profile_file.close()
파일 한 번에 열고 닫기: with 문
파일로 어떤 작업을 할 때 open() 함수로 파일을 열고 나면 반드시 close() 함수로 닫아야 한다.
with문은 파일을 열고 나서 close() 함수를 호출하지 않아도 자동으로 닫아주는 역할을 한다.
with 작업 as 변수명:
실행할 명령1
실행할 명령1
...
import pickle
with open('profile.pickle', 'rb') as profile_file:
print(pickle.load(profile_file))
새로운 텍스트 생성 & 출력
import pickle
with open('study.txt', 'w', encoding='utf8') as study_file:
study_file.write('파이썬을 열심히 공부하고 있어요.')
with open('study.txt', 'r', encoding='utf8') as study_file:
print(study_file.read())
실습문제
문제
회사에서 매주 1회 보고서를 작성하라고 한다. 1주차부터 50주차까지 보고서 파일을 만드는 프로그램을 작성하세요.
조건
1. 파일명은 '1주차.txt', '2주차.txt', ...로 만든다. 완성 코드를 실행하면 소스 코드와 동일한 위치에 다음과 같이 50개 파일을 생성한다.
1주차.txt
2주차.txt
...
49주차.txt
50주차.txt
2. 각 파일에는 각 주차에 해당하는 내용이 다음 형태로 포함돼 있습니다.
# 35주차.txt 파일 내용
- 35주차 주간 보고 -
부서 :
이름 :
업무 요약 :
for i in range(1, 51):
with open(f'{i}주차.txt', 'w', encoding='utf8') as study_file:
study_file.write(f'- {i}주차 주간보고 -\n')
study_file.write('부서 :\n')
study_file.write('이름 :\n')
study_file.write('업무 내용 :\n')
실습문제2
문제
유치원에는 각 반의 이름, 연령, 인원 정보가 띄어쓰기로 구분되어 한 줄에 정리된 파일이 있습니다. 파일 내용을 읽어 와서 각 반의 정보를 출력하는 프로그램을 작성하세요.
조건
1. 다음 내용을 넣어 텍스트 파일을 생성한다. 이 때 텍스트 파일명은 class.txt로 한다.
파일 내용 초록반 5세 20명 파랑반 6세 18명 노랑반 7세 22명
2. 생성한 파일을 읽어 와서 내용을 각각 빈칸으로 구분해 출력한다.
단, 구분을 위해 문자열 함수 중 하나인 split()을 활용한다.
3. 정보가 '명'으로 끝나는 경우 줄 바꿈한다.
단, 확인을 위해 문자열 함수 중 하나인 endwith()를 활용한다.
# 실행결과
초록반 5세 20명
파랑반 6세 18명
노랑반 7세 22명
with open('class.txt', 'r', encoding='utf8') as f:
txt = f.read() # 파일 내용 읽어 오기
words = txt.split() # 내용을 띄어쓰기로 구분해 리스트로 반환
for word in words:
print(word, end=' ')
if word.endswith('명'):
print()
'Python 기초' 카테고리의 다른 글
[Python] 예외 처리 (0) | 2023.04.01 |
---|---|
[Python] 클래스 정리 (0) | 2023.03.29 |
[Python] 함수 정리 (0) | 2023.03.22 |
[Python] 제어문 정리 (0) | 2023.03.19 |
[Python] 자료구조 정리 (0) | 2023.03.19 |
댓글