람쥐썬더

[PYTHON] 기본 문법 정리3 [open함수] 본문

파이썬

[PYTHON] 기본 문법 정리3 [open함수]

람쥐썬더123 2021. 7. 7. 00:29

ㅋㅋ람쥐

 

세번째 open, 함수, 클래식

그리고 다음번엔 정규표현식으로 기초는 마무리

진짜 생각보다 할게 많네 아직 다 제대로 응용도 못하는데 근데 쓰다보면 도움되는건 분명히 있는것 같음.

 

바로 open 부터 !

 

- open

연다는 뜻인데 문을 열거나 하는게 아닌 파일을 연다는 뜻. 텍스트나 csv파일같은것들 읽을때 사용한다 html같은 파일    도 연다. 주로 안에 텍스트가 있으니까 ..ㅇㅇ

바로 코드를 보면

o = open('um.txt','w')  # open을 이용해 파일을 열어주고, 두번째 w를 이용해 써준다(write)

data = '엄준식' 		 # 임의로 데이터 준거임

o.write(data)            # o.write를 이용해서 지정한 변수(data)를 넣는다.
        			

o.close()				# 파일을 닫아준다

 

1. open으로 파일을 열고 w(rite)를 이용해서 파일에 입력해준다는 것이다. 이걸 o 에 넣어준다

2.  o.write() 라는 함수를 이용해서 위에 임의로 정의해준 data를 넣어준다.

3. o.close() 로 파일을 닫는다..

 

이렇게 코드를 짜고 지정된 경로에 들어가면 um.text 파일이 만들어져있을것이다

이 텍스트파일 안의 내용물은 위에서 지정해준 data인 엄준식이 들어갔다.

여기서 주의할점은 파일을 열었으면 닫아야 한다는것 (꼭 겨울에 뒷문열고 안닫는놈들있더라)

근데 with open 을 쓰면 문이 자동문이 돼서 매번 닫아줄 필요가 없다.

 

이번엔 with open(자동문)을 써서 파일을 한번 읽어보자

with open('um.txt','r') as f: # f 라는 곳에(as) with open을 주입시킨다.
                              # 이번엔 w가 아닌 r(ead)를 써서 읽어주자
print(f.read())  			  

#read() 함수를 이용해서 위에 열어놓은 f를 열고 프린트를 해준다

## 출력 ##
엄준식

with open은 열면 자동으로 닫아주기 때문에 따로 close() 를 쓸 필요가 없다

 

보이는 것과 같이 열고닫는걸 f로 지정을 해주고 f.read() 를 프린트했을때 나오는 결과값은 아까 우리가 넣었던

엄준식(str) 이라는 문자열이다. 만약 um.txt 의 내용이 다르면 다른게 출력됐겠지

 

open 안의 r 과 w를 이용해서 읽고쓰고 했는데 추가적인 기능이있다.

a => append 의 약자로 메모장을 열고 새로 쓰고 덮는게 아니라 추가를 해준다.

bw => 바이너리형태로 써준다.

br => 바이너리 형태로 읽어준다. ( 디코드해줘야함 )

 

그리고 read에서 문단을 읽는 방법 readline 과 readlines 가 있다.

 

1. readline() 은 한줄씩 읽어주고

2. readlines() 는 복수형이라 한줄씩 리스트 형태로 반환하여 읽어준다.

 

코드를 한번 작성해보자

 

with open('practice.txt','w') as f:
	for i in range(1,11):
    	f.write("{}번째 줄입니다.\n".format(i))

# with open 으로 practice.txt에 w(rite)해준다
# for 문이 1부터 10까지 돌고 그안에 f.write를 해줘서 1,2,3번째 줄입니다를 출력해준다

###출력예제###

1번째 줄입니다.
2번째 줄입니다.
3번째 줄입니다.
4번째 줄입니다.
5번째 줄입니다.
6번째 줄입니다.
7번째 줄입니다.
8번째 줄입니다.
9번째 줄입니다.
10번째 줄입니다.

이걸 위의 readline() 과 readlines()를 사용해서 읽어보자

 

with open('practice.txt','r') as f:
	line = f.readline()
    lines = f.readlines()
    print(line,lines)
    

###출력값###
1번째 줄입니다.

['2번째 줄입니다.\n', '3번째 줄입니다.\n', '4번째 줄입니다.\n', '5번째 줄입니다.\n', 
 '6번째 줄입니다.\n', '7번째 줄입니다.\n', '8번째 줄입니다.\n', '9번째 줄입니다.\n', '
 10번째 줄입니다.\n']

이런식으로 나온다

 

이 둘의 차이점은

readline()은 처음 보인 한'줄' 만 출력되는 거고(str형태임)

readlines()는 복수형이라 그런가 모든 줄을 리스트형태로 뽑아온것이다.

이런식으로 read를 제외하고 파일의 내용물을 가져오는 다양한 방법이 있다.

 

 

readline() 으로 한줄씩 다 읽는 방법은 while문을 사용해서 읽는방법이 있다.

open('practice.txt','r') as f:
	while True:
   		line = f.readline()
    	if not line:
        	break
    	print(line)
        
###출력값###
1번째 줄입니다.

2번째 줄입니다.

3번째 줄입니다.

4번째 줄입니다.

5번째 줄입니다.

6번째 줄입니다.

7번째 줄입니다.

8번째 줄입니다.

9번째 줄입니다.

10번째 줄입니다.

이런식으로 무한반복 line 을 매줄씩 쪼개서 while문을 프린트해주면 된다

만약 더이상 출력할 라인이 없다면 (if not line) break 문을 써서 while문을 빠져나가면 된다

참고로 얘는 str형태라서 split 할 수 있다. 이거때매 고생 꽤나 했음..

 

open은 이정도로 하고 sys 모듈이 있는데 다뤄본적이 없어서 따로 써보고 모듈란에 추가를 하던지 해야겠다..

오늘은 여기까지 아유졸려라