⚡️algorithm

readline 과 readlines 의 차이, 다중행 입력 (+ 외부파일 입출력 방법)

남남이루 2022. 4. 8. 14:04

+ 파일에 새로운 내용 추가 (a 또는 w)pycharm에서 입력 세팅을 하다보면

 import sys 

 input = sys.stdin.readline 을 입력할 때, readlines가 함께 뜬다. 내 코드로 테스트할 때는 동일한 결과가 나왔는데, 사실 readlines는 말그대로 s 복수의 줄을 읽어올 때 사용하는 것이었다. 

readlines 함수는 파일의 모든 줄을 읽어서 각각의 줄을 요소로 갖는 리스트로 돌려준다. _ 점프 투 파이썬

그러나, 백준에서는 입력 방식이 다르기 때문에 전체 입력값을 읽어오는 readlines를 그대로 사용할 경우 에러가 난다고 한다. 따라서 입력을 여러줄 해야 하는 경우에는, readline 단행으로 읽고 반복문을 돌리는 것이 좋다.

 

 

 


 + 프로그램의 외부에 저장된 파일을 읽기 

f = open('input.text', 'r')  # 파일을 읽기모드로 열기
line = f.readline()          # 파일의 첫 줄 가져오기
# readline, readlines, read 함수 모두 읽는 함수이다. 단행이냐 전체냐 디테일의 차이가 있다.

 

 + 개행문자 제거하기(readline, readlines 사용시 오류를 일으킬 수 있음) 

line = f.readlines()
for l in lines:
    l = l.strip()      # 또는 rstrip()

 

 

 + 파일에 새로운 내용 추가 (a 또는 w) 

f = open('input.txt', 'a')   # add '추가하겠다' 모드 // w로 쓰면 write '쓰겠다' 모드
f.write('추가된 내용')
# f.close()                  # 파일 닫기

 

 

 + with구문 

파일을 열면 f.close()를 해주는 것이 좋은데, 이를 자동으로 처리하기 위해 with문을 사용하기도 한다.

with open('input.txt', 'w') as f:
    f.write('Programming is my joy')

 


* 연관 게시글

 

[boj 10610] sys.stdin.readline , input 에러

백준 10610번 30의 배수를 찾는 문제(그리디)에서, pycharm과 달리 자꾸만 런타임에러가 났다. pypy, python도 바꾸고, 코드도 바꿔서 돌렸으나 계속 런타임 에러가 났다.  import sys  input = sys.stdin.read..

namnamiroo.tistory.com

 

* 참고

Odetta님 블로그

점프투 파이썬 웹북