본문 바로가기
Python/Python 문법

Python 파일 입출력 [ 입력, 출력, 경로지정 ]

by lchit 2019. 12. 23.

 

 

 

파일 입출력?

프로그램 실행 중에 실제 사용자

저장소에 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(): 문자열로 전체 읽기