딩굴댕굴

Python - 15.파일 읽고 쓰기

by jennysgap

BOX

파일 읽고 쓰기


15.1 파일을 통한 입출력 방법


파일을 쓰기 모드로 열게 되면 해당 파일이 이미 존재할 경우 원래 있던 내용이 모두 사라지고, 해당 파일이 존재하지 않으면 새로운 파일이 생성된다.


15.2 파일을 쓰기 모드로 열어 출력값 적기

# writedata.py
f = open("/Users/jenny/Desktop/새파일.txt", 'w')
for i in range(1, 11):
    data = "%d번째 줄입니다. \n" % i
    f.write(data)
f.close()


바탕화면을 보면 없던 파일이 생겼다. 새파일.txt 확인하면 모니터 화면에 출력될 내용이 그대로 들어가 있다.


15.3 프로그램의 외부에 저장된 파일을 읽는 여러 가지 방법

파이썬에서는 외부 파일을 읽어 들여 프로그램에서 사용할 수 있는 여러 가지 방법이 있다.


readline() 함수 이용하기

# readline.py f = open("/Users/jenny/Desktop/새파일.txt", 'r') line = f.readline() print(line) f.close()

# readline.py
f = open("/Users/jenny/Desktop/새파일.txt", 'r')
while True :
    line = f.readline()
    if not line: break
    print(line)
f.close()

while True:라는 무한 루프 안에서 f.readline()을 이용해 파일을 계속해서 한 줄씩 읽어들이도록 한다.

만약 더 이상 읽을 라인이 없으면 break를 수행한다. (readline()은 더 이상 읽을 라인이 없을 경우 None을 출력한다.)


readlines() 함수 이용하기

f = open("/Users/jenny/Desktop/새파일.txt", 'r')
lines = f.readlines()
for line in lines:
    print(line)
f.close()

readlines() 함수는 파일의 모든 라인을 읽어서 각각의 줄을 요소로 갖는 리스트로 리턴한다. 따라서 위의 예에서 lines는 ["1 번째 줄입니다. \n", "2 번째 줄입니다. \n", ... , "10 번째 줄입니다.\n"] 라는 리스트가 된다.


read() 함수 이용하기

f = open("/Users/jenny/Desktop/새파일.txt",'r') data = f.read() print(data) f.close()

f.read()는 파일의 내용 전체를 문자열로 리턴한다. 따라서 위 예의 data는 파일의 전체 내용이다.


15.4 파일에 새로운 내용 추가하기

# adddata.py f = open("/Users/jenny/Desktop/새파일.txt",'a') for i in range(11, 20): data = "%d번째 줄입니다. \n" %i f.write(data) f.close()



15.5 with문과 함께 사용하기

f = open("foo.txt", 'w')

f.write("Life is too short, you need python")

f.close()

파일을 열면 위와 같이 항상 close해 주는 것이 좋다.

하지만 이렇게 파일을 열고 닫는 것을 자동으로 처리할 수 있다면 편리하지 않을까?


파이썬의 with문이 바로 이런 역할을 해준다. 

with open("/Users/jenny/Desktop/foo.txt", "w") as f:
    f.write("Life is too short, you need python")

위와 같이 with문을 이용하면 with 블록을 벗어나는 순간 열린 파일 객체 f가 자동으로 close되어 편라하다.


15.6 sys 모듈로 입력 인수 주기
도스(DOS)를 사용해 본 독자라면 다음과 같은 명령어를 사용해 봤을 것이다.

C:\> type a.txt

위의 type 명령어는 바로 뒤에 적힌 파일 이름을 인수로 받아 그 내용을 출력해 주는 도스 명령어이다.

대부분의 도스 명령어들은 다음과 같이 명령행 (도스 창)에서 입력 인수를 직접 주어 프로그램을 실행시키는 방식을 따른다.

이러한 기능을 파이썬 프로그램에도 적용시킬 수가 있다.

#sys1.py import sys args = sys.argv[1:] for i in args: print(i)

위의 예를 이용해서 간단한 스크립트를 하나 만들어 보자.

#sys2.py import sys args = sys.argv[1:] for i in args: print(i.upper(), end=' ')

문자열 관련 함수인 upper()를 이용하여 명령 행에 입력된 소문자를 대문자로 바꾸어 주는 간단한 프로그램이다. 도스창에서 다음과 같이 입력해 보자.


(※ sys2.py 파일이 C:\Python 디렉터리 안에있어야만 한다.)

C:\Python>python sys2.py life is too short, you need python

결과는 다음과 같다.

LIFE IS TOO SHORT, YOU NEED PYTHON






출처 - https://wikidocs.net/26

반응형

'BOX' 카테고리의 다른 글

직무 분석  (0) 2017.02.21
Python - 16.클래스  (0) 2017.02.17
모의해킹 관련 사이트  (0) 2017.02.11
Information Security Research  (0) 2017.02.11
교육을 위한 샘플 예제들  (0) 2017.02.11

블로그의 정보

jennysgap

jennysgap

활동하기