입력과 출력

Jaho·2021년 12월 4일
0

Python

목록 보기
8/18

키보드 입력

input

input()키보드 데이터를 입력하기 위해 이용하는 함수
input() 함수안의 '문자열'은 화면에 표시되고 키보드로 데이터를 입력한 후 Enter를 누르면 입력된 데이터는 문자열 형태로 data 변수에 대입된다.

name = input('당신의 이름은?')
print('{}이군요 반갑습니다.'.format(name))

숫자를 입력한 예

num = input('숫자를 입력하세요')
print('입력한 숫자는 {} 입니다.'.format(num))

입력받은 숫자는 정수(int)가 아닌 문자열(str)형태로 처리된다.

숫자 연산

a = input('정사각형의 한 변의 길이는? : ')
area = int(a) ** 2 # 정수로 형변환
print('정사각형의 넓이 : {}'.format(area))

정수가 입력될 것을 가정하여 int() 함수를 이용해 문자열을 정수로 형변환 하였다.
만약 실수로 입력을 받을라면 어떻게 해야할까?

area = float(a) **2

입력한 값이 정수(int)여도 실수(float)로 출력되는 것을 알아두자.

파일 읽고 쓰기

파일 열기

f = open('file_name', 'mode')

open() 함수는 file_name과 mode를 입력 인자로 받아 파일을 열고 객체인 f를 반환한다.
file_name : 열고자 하는 파일 이름
mod : 파일의 속성을 설정

mode 속성표

mode의미
r읽기 모드로 파일열기. 모드를 지정하지 않으면 기본적으로 읽기모드로 지정된다.
w쓰기 모드로 파일열기. 같은 이름의 파일이 존재하면 기존 내용 모두삭제
x쓰기 모드로 파일열기. 같은 이름의 파일이 존재하면 오류 발생
a추가 모드로 파일열기. 같은 이름의 파일이 존재하면 w와 기능 같음
b바이너리 파일 모드로 파일 열기
t텍스트 파일 모드로 파일열기(기본). 모드 지정하지 않을 시 기본적으로 텍스트 모드로 지정

혼합해서 mode 사용가능
ex) 바이너리 파일을 읽기 모드로 열고 싶다면
mode에 bw 혹은 wb를 입력
mode에 아무것도 쓰지 않는다면 rt와 같은 기능을 한다.(읽기모드 , 텍스트 모드로 파일열기)
w만 입력 시 wt모드로 파일열기

파일 생성(파일 쓰기)

f = open('file_name','w')
f.write(str)
f.close()

파일 생성

f = open('test.txt','w')  # test.txt를 파일 쓰기모드로 생성
f.write('this is test')   # test.txt안의 내용을 작성
f.close()	# 파일 닫기


사용하고있는 폴더(패키지)에 txt파일을 생성된 것을 볼수 있다.

파일 읽기

f = open('test.txt','r')  # open('test.txt')도 가능
test = f.read()  # 파일 내용을 읽은 후 변수(test)에 저장
f.close()   #파일 닫기
print(test) # 출력하여 내용 확인

test.txt의 들어있는 내용을 읽어와 볼수있다.

반복문을 이용해 파일 입 출력

파일에 문자열 한 줄씩 쓰기

구구단 2단을 파일로 저장하자

f = open('gugudan.txt','w') 
for num in range(1,10):
    format_string = '2 x {0} = {1}\n'.format(num,2*num) #저장할 내용 작성
    f.write(format_string) # 파일에 내용 저장
f.close() # 파일 닫기

파일이 잘 들어가 있는지 확인 해보자.

f = open('gugudan.txt') # f = open('gugudan.txt','r') 
gugudan = f.read()
print(gugudan)

문자열 한 줄씩 읽기

readline() : 문자열 한 줄을 읽는다.(실행한 횟수 만큼 읽음)

f = open('gugudan.txt','r')
line1 = f.readline()    # 첫번째 줄을 읽는다.
line2 = f.readline()    # 두번째 줄을 읽는다.
f.close()
print(line1)
print(line2)

# print(line1,end='')   #end=''를 사용해서 \n을 공백으로 만들면 줄바꿈(\n)을 하지 않을 수 있다.
# print(line2,end='')

readline()	을 수행하면 한 줄의 첫 문자부터 개행문자(\n)까지 문자열을 읽는다.

그래서 위의 출력된 결과처럼 공백이 생긴다.

while을 이용하여 전체 출력

f = open('gugudan.txt')
line = f.readline() # 한줄 읽기를 변수에 저장
while line:  # line을 반복한다.
	print(line,end='')	# 문자열 한 줄 출력(줄 바꿈 안함)
	line = f.readline()	# 문자열 한 줄 읽기
f.close()

readlines() : 파일 전체의 모든 줄을 읽어서 한 줄씩 요소로 갖는 리스트 타입으로 반환한다.

f = open('gugudan.txt') 
line = f.readlines() # 파일 전체 읽기(리스트로 반환)
f.close()

print(line)

전체 문자열을 읽어서 리스트 타입( [ ] )으로 반환
개행문자(\n)도 문자열에 포함되어 있다.

for문을 이용하여 readlines()를 readline()처럼 하나씩 출력하기

f = open('gugudan.txt') 
for line in f.readlines():	#파일 전체를 읽고, 리스트 항목을 line에 할당
	print(line,end='')	# 리스트 항목을 출력
f.close()

#-------------------------

# f.readlines() 대신 f만 입력해도 된다.
# f만 써도 f.readlines()를 쓴 것과 같다.

f = open('gugudan.txt') 
for line in f:
	print(line,end='')	# 리스트 항목을 출력
f.close()

with

with 문의 구조

with open('file_name','mode') as f:
<코드 블록>

with 문 활용 파일생성

with open('C:\exam\with_text.txt','w') as f:  # 파일 열기
    f.write('file write test1\n')	# 파일 쓰기
    f.write('file write test2\n')
    f.write('file write test3\n')

파일을 생성(쓰기) 했다.
뭔가 코드가 어색 해졌다 랄까 짧아졌다 왜 그런걸까?
그렇다 f.close()가 없다.
with 문은 자동으로 close()를 수행하기 때문에 f.close()를 작성하지 않아도 된다.
그리고 주소를 지정할 수 있어서 아주 유용하다.

with 문 파일 읽기

with open('C:\exam\with_text.txt') as f:  # 파일 열기
    print(f.read()) # 파일 읽기
    
    #line = f.read()
    #print(line)

with 문 구구단 파일 쓰기 / 읽기

파일 쓰기

with open('C:\exam\gugudan.txt','w') as f:  # 파일 열기
    for num in range(2,10): # 2~9단 까지  
        for num2 in range(1,10): # 1~9 까지
            gugudan = '{0} x {1} = {2}\n'.format(num,num2,num*num2)
            f.write(gugudan)

파일 읽기

with open('C:\exam\gugudan.txt','r') as f:
    for lines in f:
        print(lines,end='')

profile
개발 옹알이 부터

0개의 댓글