지난 시간에 이어 오늘도 텍스트 파일을 괴롭혀 보겠습니다. 오늘은 한 줄 씩 난도질을… --+
파일을 처음부터 끝까지 읽을 땐 read()를 썼죠? 한 줄 씩 읽을 때는 readline()을 사용하시면 됩니다. 제발 좀 읽어달라고 울부짖는 readme 파일을 한 번 읽어줄까요?
>>> f = open('C:\\Python27\\readme.txt') >>> f.readline() 'This is Python version 2.7.1\n' >>> f.readline() '============================\n'
간단하죠? 별 것 아닙니다. 파일 내용을 처음부터 주루룩~ 읽어나가다가 ‘\n’이 나타나면 한 줄이 끝난 줄 알고 딱 멈춰서게 되는 겁니다.
다음과 같이 반복문과 readline()을 사용하면 텍스트를 원하는 줄 수 만큼만 읽어들일 수 있답니다.
>>> f = open('C:\\Python27\\readme.txt') >>> for x in range(5): ... line = f.readline() ... print line, ... This is Python version 2.7.1 ============================ Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Python Software Foundation.
파일을 한 줄 씩 읽어 화면에 출력하기를 다섯 번 되풀이했지요.
print line,에서 끝에 쉼표를 찍어준 것은 readline()으로 읽은 줄들도 개행문자를 포함하고 있고, print 문 자체도 줄 넘김 기능이 있어서 그냥 print line이라고 하면 두 줄 씩 넘겨버리기 때문입니다.
이번엔 똑같이 다섯 줄을 읽기는 하지만 조금 다르게 하는 방법을 보여드리겠습니다.
>>> f = open('C:\\Python27\\readme.txt') >>> lines = f.readlines() >>> import sys >>> sys.stdout.writelines(lines[:5]) This is Python version 2.7.1 ============================ Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Python Software Foundation.
여기서는 readline()이 아니라 readlines()를 사용했습니다. s 자가 더 붙었죠? readlines()로 파일을 읽으면 한 줄, 한 줄이 각각 리스트의 원소로 들어갑니다. 파일 전체가 lines라는 리스트에 쏙 담기는 거죠. 그 다음엔 sys 모듈을 이용해서 lines에 들어있는 것들을 입맛대로 꺼내실 수 있습니다.
이 방법을 쓰면 아주 쉽게 원하는 줄을 읽어들일 수 있겠죠? 16번째 줄부터 20번째 줄까지를 읽어볼까요?
>>> sys.stdout.writelines(lines[15:20]) License information ------------------- >>>
왜 15:20이라고 하는지 아리송하신 분은 ‘문자열과 리스트’강좌를 복습하셔야겠네요.
오늘의 하이라이트! 끝에서 다섯 줄을 읽어봅시다.
대체 어떻게 해야할까요? 파이썬 튜토리얼을 살펴보시면 직접 알아내실 수도 있는데…
힌트라도 드릴까요?
리스트에서 맨 마지막 원소의 인덱스는 –1이랍니다. 그게 무슨 말이징…
한 번 도전해보세요. 성공하신 분은 파이썬을 만든 분의 이름을 보실 수 있을 거예요~
>>> sys.stdout.writelines(lines[___]) That's all, folks! ------------------ --Guido van Rossum (home page: http://www.python.org/~guido/) >>>
'Python > 왕초보를 위한 파이썬' 카테고리의 다른 글
07. 객체지향 (0) | 2012.04.06 |
---|---|
6.3. 파일을 입맛대로 (0) | 2012.04.04 |
6.1. 파일 입출력 (0) | 2012.04.04 |
5.4. 무작위(Random) 뭉치 (0) | 2012.04.04 |
5.3. 여러가지 뭉치 (0) | 2012.04.04 |
댓글