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 | 의미 |
---|---|
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)까지 문자열을 읽는다.
그래서 위의 출력된 결과처럼 공백이 생긴다.
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)도 문자열에 포함되어 있다.
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 open('file_name','mode') as f:
<코드 블록>
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 open('C:\exam\with_text.txt') as f: # 파일 열기
print(f.read()) # 파일 읽기
#line = f.read()
#print(line)
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='')