[Python] - 파일 읽기, 쓰기

김진수·2020년 11월 23일
0
post-thumbnail
post-custom-banner

파일 읽기

python에서는 외부파일을 읽어와 쓸수 있도록 설정이 되어 있습니다. 그렇기에 파일에 여러 기능을 정리해놓으면 추후에 그 기능을 쉽게 가져와 쓸 수 있습니다. 그럼 파일 읽는 방법을 코드와 같이 설명드리겠습니다.

1. open 형식

f = open('./resources/test1.csv','r')

이 코드는 상대경로에 있는 resources폴더 안에 있는 test1.csv를 'r'을 통하여 파일을 읽어올 것이라는 것을 알려주는 것이다. 그리고 이 후 코드에서 실질적으로 어떻게 읽어올 것인지 결정된다.

content = f.read()

이 코드는 읽어온 코드를 read()를 통해 파일을 어떻게 읽을지을 결정하는 코드입니다.
read()는 파일 전체의 내용을 하나의 문자열로 읽어오는 메소드 입니다.

read()말고도 어떠한 형식으로 저장할 지 결정하는 메서드 형식을 알아보겠습니다.
1.read() : 파일 전체의 내용을 하나의 문장열로 읽어오는 메소드입니다.
2.readline() : 한번에 하나의 라인을 읽어오는 메소드입니다다.
3.readlines() : 파일 전체를 한라인씩 읽어와서 리스트를 만들어주는 메소드입니다.
readlines()는 개행문자인 "\n" 도 같이 들어가 있기 때문에 이 부분을 제거해주는 comand가 필요할 수도 있습니다.

또한 open함수를 사용하면 마지막에 close를 통해 리소스를 반환해주어야 합니다.
f.close()

전체코드입니다

f = open('./resources/test1.csv','r')
content = f.read()
print(content)
print(dir(f))
f.close()

이번에는 위에 형식보다 훨씬 더 많이 사용하고 간편한 형식을 알아보겠습니다.

2. with open 형식

이 형식은 위에 형식과 다르게 마지막에 따로 close를 안해도 알아서 리소스를 반환해주기 때문에 많이 사용되는 편입니다. 그럼 코드를 보면서 설명하겠습니다.

with open('./resources/test1.csv','r') as f:

이 코드는 위에 코드와 마찬가지로 상대경로에 있는 resources폴더 안에 있는 test1.csv를 'r'을 통하여 파일을 읽어올 것이라는 것을 알려주는 것이다. 뒤에 "as f"는 위에 형식에서 "f =" 이 부분과 같다고 보시면 됩니다. " open('./resources/test1.csv','r')"를 as통해 f로 대체할 것이다라는 의미입니다.

나머지는 위와 동일합니다

마지막으로 메소드를 통해 이미 한번 가져온 파일을 또 다시 메소드를 통해 가져올 수 없습니다.!!
가져오려면 다시 선언을 한 후 가져와야 합니다.

파일 쓰기

이번에는 파일 쓰기입니다. 파일 쓰기는 파일 읽기와 반대로 폴더를 지정하여 그 폴더내의 파일을 만들어 작성하는 것입니다. 그렇기에 파일 쓰기를 통해 외부파일에서도 다른 폴더내의 파일을 만들어 작성하여 손쉽게 파일을 작성할 수 있는 이점이 있습니다. 파일쓰기는 파일읽기와 비슷하지만 write의 약자인 'w'를 사용합니다. 이번에는 거의 사용되지 않은 open이 아니라 with open을 통해 설명하겠습니다.

1. with open 형식

with open("./resources/test1.txt",'w') as f:

이 코드를 보시면 아시겠지만 파일읽기와 거의 동일합니다. resources내의 test1.txt 파일을 만드는 코드입니다. 위와 동일하게 "as f" 를 통해 f로 대체하고

f.write("niceman!\n")

이를 통해 resources내의 test1.txt파일에 niceman이라는 문자열을 입력시키는 코드입니다.

with open("./resources/test1.txt",'w') as f:
    f.write("niceman!\n")

전체 코드입니다.

또한 write메소드 말고 자주 사용하는 메소드가 writelines메소드입니다. write와 비슷하지만 writelines는 리스트를 파일로 저장하는 메소드입니다.

with open("./resources/test3.txt",'w') as f:
    list = ['kim\n', 'park\n','cho\n']
    f.writelines(list)

이 코드는 list_1의 list를 writelines(list_1)를 통해 resources내의 test3.txt를 만들어 저장시키는 코드입니다.

profile
백엔드 개발자
post-custom-banner

0개의 댓글