프로그래밍/Python

파이썬 파일입출력

seungdols 2014. 12. 23. 23:13

파일은 단지 여러 라인으로 구성된 텍스트다.


open()이라는 파이썬 내장 함수를 이용하여 파일을 연결하고 파일을 읽을 떄는 한번에 한 라인씩 가져 온다.


그리고 seek() 함수는 파일의 위치를 이동시키는 함수이다. 이 함수는 리눅스에서도 쓰이는 OS 함수이다.


그리고 split()이라는 함수는 자바에도 있다. 구분자를 가지고 왼족 타킷,우측 타킷에 데이터를 분할하여 넣어준다.

>> print(data.readline() , end = '')
Man: Is this the right room for an argument?
>>> print(data.read())
Other Man : I've told you once.
Man : No you haven't!

>>> data.seek(0)
0
>>> print(data.readline())
Man: Is this the right room for an argument?

>>> print(data.read())
Other Man : I've told you once.
Man : No you haven't!

>>> data.seek(0)
0
>>> for each_item in data:
	print(each_item, end='')

	
Man: Is this the right room for an argument?
Other Man : I've told you once.
Man : No you haven't!
>>> data.close()


그리고 파일을 열었다면, 무조건 close()해주는 것이 중요하다!


물론 split(bean) 과 split(bean,1)의 차이가 있다.


인자를 하나만 주면 구분자를 가지고 각 각 나누는 반면, 2번째 파라미터로 1이든 숫자를 써주면 분할 수 정하는 것이다.
(일단은 이렇게 이해하고 넘어가자)


파이썬은 동시 대입이 가능하다. 동시에 변수 2개에 2개의 데이터를 넣어준다는 말이다. 


>>> (role, line_spoken) = each_item.split(":")
>>> print(role)
Man 
>>> print(line_spoken)
 No you haven't!

이 위의 문장을 말한다.  좌측에 , 로 분리 된 변수 2개에 split으로 콜론 기준으로 데이터를 나누는 것이다.


find()를 사용하면 해당하는 부분을 찾아준다.



>>> print(line_spoken)
 No you haven't!
>>> line_spoken.find("!")
15
>>> 

이렇게 find를 사용하여 처리 할 수 있다.

예외 처리!


- 예외 처리는 정상적인 프로그램의 흐름이 아니라 특정한 다른 상황 일 때 일어나는 상황을 말한다.

일단 파이썬은 정상적인 흐름으로 실행하고, 예외가 발생하면, 예외에 대한 처리를 한 후 다시 본래의 흐름으로 돌아온다.


try:

런타임 에러를 발생 시킬 수도 있는 코드

except:

여러분이 정의한 에러 복구코드


위와 같은 문법으로 에러처리를 하게 된다.



>>> try:
	for each_item in data:
		print(each_item, end='')
except:
	print("file close")

	
file close
>>> 


위와 같이 프로그램을 예외처리 해주는 것을 프로그램을 더 좋게 만드는 방법입니다.

추가하자면 try - except - finally 까지가 예외처리의 완성이다.

보통 finaly에서 파일에 대한 종료 작업을 해주면 된다. 이유는 finally구문은 무조건 실행한다.

파일을 열어두고 작업 시에는 에러가 발생해도 파일이 무조건 열려있다. 그래서 닫는 작업이 필요로 하다.


try:
    with open('man_data.txt', 'w') as man_file, open('other_data.txt', 'w') as other_file:
        print(man, file=man_file)
        print(other, file=other_file)


그러나 파이썬에서 with라는 키워드를 이용해 finally를 사용하지 않아도 파일을 닫지 않아도,

with를 try와 사용하면 파이썬 인터프리터가 자동으로 처리해준다.

(with는 context management protocol이라는 파이썬 기술을 사용함)


핵심!

- 모두 암기

파이썬의 문자열은 불변성이다!

파이썬 변수는 데이터 객체를 참조 할뿐이다.

리스트 형태이지만 불변성인 튜플, 수치 데이터는 모두 불변!

중요한 사실은 함수형 프로그래밍 언어가 불변성의 패러다임을 갖는다.

즉, 함수형 프로그래밍의 성격도 지니는 언어가 파이썬이다.


함수형 언어란 LISP, 스칼라등 인공지능 혹은 요즘 추세는 웹 Back-End, 서버 연동시에 사용하는 추세다.

Linked in같은 경우 그루비? 스칼라? 정확히 기억이 나지 않지만 함수형 언어로 구현했다.

물론 그루비는 창시자가 스칼라 진영으로 넘어가서 스칼라가 대세다.

반응형