신규 블로그를 만들었습니다!

2020년 이후부터는 아래 블로그에서 활동합니다.

댓글로 질문 주셔도 확인하기 어려울 수 있습니다.

>> https://bluemiv.tistory.com/

 

 

 

 

전글

 

2018/01/05 - [Language/Python] - Python :: 함수(method, function)에 대해 알아보자 #10

 

 

 

 

이번에는 파일 입출력에 대해서 알아 보겠습니다.

 

 

file을 불러오기 위해 open() 함수를 이용합니다.

 

기본형태는 

 

 

open('파일 주소 및 이름', 'w 또는 r 또는 a') 

 

 

위와 같습니다.

 

 

파일 입출력에는 3가지 형태가 있습니다.

 

w(write) : 쓰기

r(read) : 읽기

a(add) : 추가하기

 

그럼 차례대로 예제를 통해 알아보도록 하겠습니다.

 

 

1. Write 쓰기

# w: 쓰기
f = open('C:/programing/python/data/ex_memo.txt','w')
students = ['김철수', '최영', '한석규', '김태희']
for student in students:
    msg = student
    f.write(msg+"\n")
 
f.close()

저 같은경우에는 주소 및 파일명을

 

C:/programing/python/data/ex_memo.txt 라고 설정 했지만, 파일명만 ex_memo.txt 처럼 써도 상관없습니다.

 

파일명만 쓴 경우에는 코드파일에 같은 디렉토리(폴더) 안에 .txt 파일이 저장이 됩니다.

 

open() 함수 두번째 인자값으로 w 를 넣어주면 write(쓰기) 모드가 됩니다.

 

만약 파일이 해당 주소에 존재하지 않으면 새롭게 파일을 만들고,

 

파일이 존재한다면 내용을 덮씌웁니다.

 

 

위 코드를 보면 students 라는 List(리스트) 안에 값을 넣어두고,

 

반복문을 통해 하나씩 꺼내서 .write() 함수를 통해 파일에 입력을 하고 있습니다.

 

또한 '\n' 을 통해 개행을 해주고있습니다.

 

이렇게 완료한뒤에 close() 함수를 이용해 파일을 닫아줍니다.

 

 

그리고, 해당 폴더에 ex_memo.txt 라는 파일이 있고 열어보시면

 

김철수

최영

한석규

김태희

 

라는 글씨가 입력되어 있습니다.

 

 

이 형태의 코드를 좀더 간단하게 쓰는 방법이 있습니다.

 

바로 with을 사용 하는 방법입니다.

 

 

with open('파일 주소 및 이름', 'w 또는 r 또는 a') as f :

수행할 문장...

 

 

 

# w: 쓰기 - with 문 사용하기
students = ['김철수', '최영', '한석규', '김태희']
with open('c:/programing/python/data/ex_memo.txt', 'w') as f:
    for student in students:
        msg = student
        f.write(msg+"\n")

 

위 코드는 첫번째 코드와 동일한 코드 입니다.

 

 

 

2. Read 읽기

 

 

아까는 open 함수의 두번째 인자 값으로 w 를 썼지만, 읽기 모드를 사용 할때는 r 을 사용 합니다.

 

크게 3가지 형태로 파일의 내용을 가져올 수 있습니다.

 

 

첫째, 한줄만 가져오기

# r: 읽기 1 - 한줄만 가져옴
f = open('c:/programing/python/data/ex_memo.txt', 'r')
 
while True:
    line = f.readline()
    if not line:
        break
    print(line)
 
f.close()

readline() 함수를 사용 하는 방법입니다.

 

readline() 함수를 이용하면, 첫째줄부터 한줄씩 가져오는 역할을 합니다.

 

 

좀 더 쉽게 얘기를 한다면 첫번째 루프에서(while문) 김철수를 가져오고, 그다음 루프에서 최영을 가져옵니다.

 

이렇게 김태희 까지 모든 값을 가져온뒤, 더 이상 가져올 값이 없다면 if문 조건문에 걸려 break로 반복문을 빠져나오게 됩니다.

 

(break에 대해 알아보기 >2018/01/05 - [Language/Python] - Python :: 반복문! while에 대해 알아보자 #8 )

 

 

두번째, 여러줄 가져오기

# r: 읽기 2 - 한줄씩 List 형태로 가져옴
f = open('c:/programing/python/data/ex_memo.txt', 'r')
 
lines = f.readlines()
print(lines)             # ['김철수\n', '최영\n', '한석규\n', '김태희\n']
print(type(lines))       # <class 'list'>
for line in lines:
    print(line)
f.close()

얼핏보면 readline() 과 비슷 할 수 있지만, 자세히 보면 뒤에 s 가 붙어있습니다.

 

함수 이름만 보더라도 복수형태를 가진다는것을 알 수 있습니다.

 

 

readlines() 함수를 이용하면,

 

첫번째 줄부터 마지막줄까지 리스트(List) 형태로 값을 가져옵니다.

 

위 코드같은경우에는 lines 라는 변수에 ['김철수\n', ;최영\n', '한석규\n', '김태희\n'] 라는 값이 들어가 있습니다.

 

반복문을 통해 리스트값을 하나씩 꺼내서 출력하면

 

김철수

 

최영

 

한석규

 

김태희

 

라는 값이 나오는 것을 확인 할 수 있습니다.

 

 

세번째, 내용 전체 가져오기

# r: 읽기 3 - 내용 전체 다 가져옴
f = open('C:/programing/python/data/ex_memo.txt', 'r')
 
memo = f.read()
print(memo)
f.close()

마지막으로 read() 함수에 대해 알아보겠습니다.

 

매우 간단합니다.

 

read() 함수를 이용하면, 파일에 적힌 모든 내용을 가져옵니다.

 

 

3. Add 추가하기

 

이번엔 open() 함수에 'a'를 써주시면 됩니다.

 

write 모드랑 비슷해 보일수 있습니다. 

 

큰 차이점은 파일안의 내용을 덮어씌우는것이 아니라, 파일의 마지막 내용에 새로운 내용을 이어서 추가합니다.

# a:추가
with open('C:/programing/python/data/ex_memo.txt','a') as f:
    f.write('추가인원 : hongku')

위 코드를 실행하면

 

파일안에

 

김철수

최영

한석규

김태희

추가인원 : hongku

 

라고 입력되어 있는것을 확인 할 수 있습니다.

 

 

 

다음글..

 

2018/01/10 - [Language/Python] - Python :: 예외 처리에 대해 알아보자 (try ~ except) #12

 

  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기