파일 입출력?
프로그램 실행 중에 실제 사용자
저장소에 txt형태로 데이터를 남길 수 있다.
txt 파일을 이용해 데이터를 불러들이고
또 txt형태로 데이터를 내보낼 수 도있다.
파일 입력이란
외부로부터 txt 형태의 데이터를 불러들여
프로그램으로 가져오는 걸 뜻하고
파일 출력이란
프로그램으로부터 외부로 데이터를
저장하는 걸 출력이라 한다
무조건 프로그램 기준으로 바라본다.
1. 파일 출력 ( 내보내기 )
(1) 파일 열기
명령어 : 변수명 = open( '파일명', '작업' )
ex) f = open( 'data.txt', 'w' )
파일 출력을 위해 적당한 변수명
f로 =open 파일을 열었다 괄호 안에는
열 파일의 '파일명'과, 'w'라는 것이 있는데
'w'를 설명을 하자면 작업의 종류이다.
'w' : write 덮어쓰기 (기존 데이터 삭제)
'a' : append 이어 쓰기 (기존 데이터 유지)
'r' : read 읽기 (데이터 불러들이기)
그리고 파일을 열어 작업이 다 끝났다면
f.close()로 파일을 닫아주어야 한다.
현재 이 블로그를 작성하고 있는 workspace 폴더이다
이제 이 폴더 안에 프로그램에서 데이터를 작성한
txt 파일을 생성(출력) 시켜보겠다
IDLE 상에서 이렇게 작성 후 실행시킨 뒤
다시 위의 폴더를 보겠다
생성 변수 f에
f.write()를 하게 되면 괄호 안의 내용을
데이터를 txt 파일에 입력하게 된다.
기존에 존재하지 않던 dataEx.txt 파일이 생긴 것을 볼 수 있다.
이 파일을 열어보면
이렇게 코드대로
파일이 열리고 쓰고 저장된 것이
확인된다.
2. 사용자에게 입력받아 파일 출력하기( 내보내기 )
파일을 작업내용 'a' 즉,
append 기존 데이터에 이어쓰기로
파일을 열고
반복문으로 string값을 사용자에게
입력받는고 파일에 입력받은
string 문자열과 '\n'을 합쳐서
파일에 쓴다.
만약 string이
소문자로 변경 후 quit와 같다면
반복을 종료시킨다
프로그램에서 사용자가 입력한 값이
출력되어 txt 파일에 잘 출력되었다.
3. 파일 입력( 불러오기 )
위의 작성한 txt 파일을 불러들여보자
filePath라는 변수에 아까 작성한 dataEx.txt의 주소를
저장해 주었다.
그리고 f = open( filePath, 'r' )로
주소에 있는 대상을 'r' >> read 읽어 들였다.
line 이란 변수로 f.readlines() 함수를 써서
f에 대한 데이터를 읽어 들였다.
이는 리스트 형태로 저장되기에
for 반복문으로 리스트 요소를 출력해주어
저장돼있던 텍스트 파일 데이터를 불러오게 된 것이다.
4. 파일 입출 시 경로
(1) 절대 경로
파일을 읽거나 쓸 때
특정 경로로 지정해준다.
ex) 'C:/Users/wow/Desktop/data/data.txt'
절대 경로의 경우 다른 pc에서 작업 시
주소 값이 맞지 않기 때문에 수정을 해줘야 한다.
(2) 상대 경로
'./data/data.txt'와 같이
로 입력했다면 작업 중인
workspace 폴더 기준으로
상대적인 주소가 지정되는 것이다
다른 pc에서 작업하더라도
같은 workspace 라면./data 전의
주소는 상대적이기 때문에 지장이 없다.
5. 파일 입출력 정리
열기: 변수 = open('파일 이름(경로)', '작업')
'작업' :
'r'(read) : 읽기 작업
'w'(write) : 덮어쓰기 작업(기존 데이터 삭제)
'a'(append) : 이어 쓰기 작업(기존 데이터 유지)
쓰기: f.write(내용)
읽기:
f.readline(): 한 줄 읽기
f.readlines: 전체 일기(리스트로 저장)
f.read(): 문자열로 전체 읽기
'Python > Python 문법' 카테고리의 다른 글
Python 모듈 불러오기 [ from, import, Module, as, sys, path, 경로지정 ] (0) | 2019.12.25 |
---|---|
Python 함수 [ 기초 및 다양한 활용 ] (0) | 2019.12.25 |
Python - 반복문 While ( break, 무한루프 ) (0) | 2019.12.23 |
Python 반복문 [ for ], 범위 지정 [ range ], 중첩반복문 (0) | 2019.12.22 |
Python 조건문 [ if, elif, else ] [ 삼항 연산자 ] (0) | 2019.12.22 |