본격적인 파이썬을 활용하기 위해서는 데이터를 입력해서 저장하고,
저장된 데이터를 불러오는 출력 기능이 꼭 필요한데요
오늘은 입출력을 어떻게 할 수 있는지 배웠습니다.
나도코딩님 6시간 강의를 끊어 듣고 있는데,
앞으로 한 3 섹션정도 남았네요~ 이번주도 계속 정주행 해 보겠습니다.
1. 표준 입출력
1) 기본 출력 형태 응용
print(): 안의 내용을 출력
콤마(,): print 안에 내용을 연속 출력 하되 중간에 띄어쓰기 한 칸 함
print("Python","Java") #Python Java
더하기(+): print 안에 내용을 연속 출력 하되 중간에 띄어쓰기 없음
print("Python"+"Java") #PythonJava
sep=””: print 안에 내용을 연속 출력 하되 큰 따옴표(“”) 안에 추가 하고 싶은 내용을 추가할 수 있음
print("Python","Java", sep=",") #Python,Java
print("Python","Java", "JavaScript", sep=" vs ") #Python vs Java vs JavaScript
end=””: print 안에 내용 출력 후 문장의 끝 부분을 큰 따옴표(“”)안의 내용으로 바꿀 수 있음
print("Python","Java", end="?") #Python Java?
** print 문을 연속해서 두 개의 문장으로 쓸 경우, end를 이용하여 두 문장을 한 문장으로 출력 할 수 있음
print("Python","Java", end=" ")
print("무엇이 더 재밌을까요?")
#Python Java 무엇이 더 재밌을까요?
ㅁ sep과 end의 응용
print("Python","Java", sep=", ", end="? ")
print("무엇이 더 재밌을까요?")
#Python, Java? 무엇이 더 재밌을까요?
2) 표준출력
a 표준출력(stdout), 표준에러(stderr) 확인
. 로그 처리 시 표준출력은 정상이고 표준에러는 코드 수정이 필요한 것
. sys 모듈을 이용
import sys
print("Python","Java", file=sys.stdout)
print("Python","Java", file=sys.stderr)
b 출력포맷
ㅁ 정렬: 오른쪽 정렬:: .rjust() / 왼쪽 정렬: .ljust()
() 안 에는 공간 확보를 하고 싶은 숫자를 입력한다
즉, 변수.ljust(8)라고 하면 총 8칸을 만들고 거기에서 왼쪽 정렬을 한다
만약의 내용이 수학이라고 하면 수학ㅁㅁㅁㅁㅁㅁ 이 된다 (ㅁ는 빈 칸을 의미)
scores={"수학":0, "영어":50, "코딩":100}
for subject, score in scores.items():
print(subject.ljust(8), str(score).rjust(4), sep=":")
'''
수학 : 0
영어 : 50
코딩 : 100
'''
ㅁ .zfill(): ()안의 숫자 만큼 칸을 확보하고, 내용이 없는 칸에는 0을 넣는다
for num in range(1,21):
print("대기번호: " + str(num))
'''
대기번호: 1
대기번호: 2
'''
for num in range(1,21):
print("대기번호: " + str(num).zfill(3)) #3개만큼의 크기를 확보하고 0을 집어 넣는데 값이 없을 때만 넣는다
'''
대기번호: 001
대기번호: 002
'''
3) 표준입력:: input
. input으로 감싸면 화면에 입력 창이 뜬다
. input으로 값을 받을 경우 항상 문자열 형태로 저장된다
answer = input("아무 값이나 입력하세요 : ")
print("입력하신 값은" + answer + "입니다")
#아무 값이나 입력하세요 : 10
# 입력하신 값은10입니다
2. 다양한 출력포맷:”{0:포맷형태}”.format()
예제 1: "{0: >10}".format(500)
빈공간 = 빈자리
>: 오른쪽 정렬
10: 총 10자리 공간 확보
print("{0: >10}".format(500)) # 500
예제2: "{0: >+10}".format(500)
+: format안의 값이 양수일 때는 +로 표시, 음수일 때 –로 표시
print("{0: >+10}".format(500)) # +500
print("{0: >+10}".format(-500)) # -500
예제3: "{0:_<+10}".format(500)
_: 빈칸에 _로 채움
<: 왼쪽 정렬
print("{0:_<+10}".format(500)) #+500______
예제4: "{0:,}".format(10000000000000000)
,(콤마): 3자리마다 콤마를 찍어 줌
print("{0:,}".format(10000000000000000)) #10,000,000,000,000,000
예제5: "{0:+,}".format(10000000000000000)
+: +&- 표시
,(콤마): 3자리마다 콤마 찍기
print("{0:+,}".format(10000000000000000)) #+10,000,000,000,000,000
print("{0:+,}".format(-10000000000000000)) #-10,000,000,000,000,000
예제6: "{0:^<+30,}".format(10000000000000000)
^: 빈칸에 ^채우기
<: 왼쪽정렬
+: 양수/음수 표시
30: 칸 30개
,(콤마): 3자리마다 콤마 찍기
print("{0:^<+30,}".format(10000000000000000)) #+10,000,000,000,000,000^^^^^^^
예제7: "{0:f}".format(5/3)
f: 소수점 출력
print("{0:f}".format(5/3)) #1.666667
예제8: "{0:.2f}".format(5/3)
.2f: 소수점 2째짜리까지 표시 하되, 3째 자리에서 반올림
print("{0:.2f}".format(5/3)) #1.67
3. 파일입출력
ㅁ 파일 열기: open(“파일명”, “명령어”, encoding=”utf8”)
. 명령어: w(덮어쓰기) & a(이어쓰기) & r(읽기)
. utf8: 한글을 제대로 읽기 위함
ㅁ 파일 닫기: 파일명_file.close()
1) 파일 내용 쓰기
score_file=open("score.txt", "w", encoding="utf8") #w: 쓰기용도: 덮어쓰기
print("수학: 0", file=score_file)
print("영어: 50", file=score_file)
score_file.close()
score.txt 라는 파일이 생성되고, 안에 내용이 입력되어 있다.
수학: 0
영어: 50
score_file=open("score.txt", "a", encoding="utf8") #a: 이어쓰기
print("수학: 0", file=score_file)
print("영어: 50", file=score_file)
score_file.close()
score.txt 라는 파일에 내용이 추가 되어 있다.
수학: 0
영어: 50
수학: 0
영어: 50
2) 파일 내용 읽기
ㅁ read(): 모든 내용 읽기
ㅁ readline(): 한 줄 씩 읽고, 커서는 다음 줄로 이동
예제1:
score_file = open("score.txt", "r", encoding="utf8")
print(score_file.read())
score_file.close()
'''
수학: 0
영어: 50
수학: 0
영어: 50
'''
예제2:
score_file = open("score.txt", "r", encoding="utf8")
print(score_file.readline())
print(score_file.readline())
print(score_file.readline())
print(score_file.readline())
score_file.close()
'''
수학: 0
영어: 50
수학: 0
영어: 50
'''
예제3: 몇 줄인지 모를 때 – while문 이용
score_file = open("score.txt", "r", encoding="utf8")
while True: #무한루프로 계속 반복
line = score_file.readline()
if not line: #line이 없으면, 즉 읽어 올 내용이 없으면
break #반복문 탈출
print(line)
score_file.close()
'''
수학: 0
영어: 50
수학: 0
영어: 50
'''
예제4: 몇 줄인지 모를 때 – list를 만들어서 처리
score_file = open("score.txt", "r", encoding="utf8")
lines = score_file.readlines()
for line in lines:
print(line, end="")
score_file.close()
'''
수학: 0
영어: 50
수학: 0
영어: 50
'''
4. pickle: 프로그램 상에서 사용하는 데이터를 파일 형태로 저장해 주는 것
ㅁ pickle을 사용 할 때는 바이너리(binary)를 항상 정의해 줘야한다
바이너리(binary)란?
2진수로 표시되는 데이터를 말하며, 일반적으로 프로그램을 컴파일하여 생성되는 목적 프로그램파일, 통신망을 통하여 데이터를 전송하기 위하여 사용하는 전송 데이터 파일에서 널리 사용된다.
1) pickle 로 저장하기: pickle.dump(변수, 변수_file)
import pickle
profile_file = open("profile.pickle", "wb")
#b: 바이너리를 의미하는데 피클에서는 항상 정의 해 줘야함
#encoding은 따로 정의 해 줄 필요 없음
profile = {"이름":"박명수", "나이":30, "취미":["축구", "골프", "코딩"]}
#사전 형태로 만들고 그 안에 취미는 리스트 형태로 만든다
print(profile)
pickle.dump(profile, profile_file)
#profile에 있는 정보를 file에 저장
profile_file.close()
#{'이름': '박명수', '나이': 30, '취미': ['축구', '골프', '코딩']}
2) pickle로 불러오기: pickle.load(변수_file)
import pickle
profile_file = open("profile.pickle", "rb")
profile = pickle.load(profile_file)
#file에 있는 정보를 profile에 불러오기
print(profile)
profile_file.close()
#{'이름': '박명수', '나이': 30, '취미': ['축구', '골프', '코딩']}
5. with: pickle을 사용하지 않고 데이터를 저장하고 불러올 수 있음
1) with를 활용해서 pickle 파일을 불러 올 수 있음
import pickle
with open("profile.pickle", "rb") as profile_file:
#profile을 열어서 profile_file 변수에 저장
print(pickle.load(profile_file))
#{'이름': '박명수', '나이': 30, '취미': ['축구', '골프', '코딩']}
2) 데이터 저장
ㅁ with open(“파일명”, “w”, encoding=”utf8”) as 변수:
변수.write(“내용”)
with open("study.txt", "w", encoding="utf8") as study_file:
study_file.write("파이썬을 열심히 공부하고 있어요")
3) 데이터 불러오기
with open("study.txt", "r", encoding="utf8") as study_file:
print(study_file.read())
#파이썬을 열심히 공부하고 있어요
6. Quiz
문제: 당신의 회사에서는 매주 1회 작성해야 하는 보고서가 있습니다.
보고서는 항상 아래와 같은 형태로 출력되어야 합니다.
- X 주차 주간 보고 –
부서 :
이름 :
업무 요약 :
1주차부터 50주차까지의 보고서 파일을 만드는 프로그램을 작성하십시오.
조건: 파일명은 ‘1주차.txt’, ‘2주차.txt’, … 와 같이 만듭니다.
for i in range(1,51):
with open(str(i)+"주자.txt", "w", encoding="utf8") as report_file:
report_file.write("- {0} 주차 주간 보고 –" .format(i))
report_file.write("\n부서 :")
report_file.write("\n이름 :")
report_file.write("\n업무 요약 :")
오늘까지해서 파일을 생성하고, 불러올 수 있게 되었습니다.
뒤로 갈 수록 앞의 내용들을 까먹어서 다시 보고 오느라고 시간이 걸리네요
이렇게 함수와 모듈에 관한 지식이 누적되면 곧 데이터 분석까지 할 수 있을 것 같습니다.
나도코딩 강의 함께 정주행해요~
'Programming > Python' 카테고리의 다른 글
[Python] 파이썬 기초 공부 07 (feat. 나도코딩)_함수 (0) | 2020.04.21 |
---|---|
[Python] 파이썬 기초 공부 06 (feat. 나도코딩)_If 조건문, for/while 반복문 (0) | 2020.04.16 |
[Python] 파이썬 기초 공부 05 (feat. 나도코딩)_자료 구조 (0) | 2020.04.15 |
[Python] 파이썬 기초 공부 04 (feat. 나도코딩)_문자열 (0) | 2020.04.14 |
[Python] 파이썬 기초 공부 03 (feat. 나도코딩)_연산자와 함수 (0) | 2020.04.13 |