파이썬 & 오픈소스 개발 Tip과 강좌

이곳은 파이썬과 여러 오픈소스 기반 프레임워크 관련 Tip과 강좌 게시판 입니다. 관련 개발을 진행하면서 알아내신 Tip이나 강좌와 새로운 소식을 적어 주시면 다른 공부하는 분들에게 큰 도움이 됩니다. 감사합니다. SQLER.com은 개발자와 IT전문가의 지식 나눔을 실천하기 위해 노력하고 있습니다.

안녕하세요. SQLER의 코난 김대우입니다. 

이번 강좌에서는, Python 중급 강좌 - 7. 파일작업(File read/write)을 진행토록 하겠습니다.

 

SQLER에서 진행되는 전체 Python / 머신러닝 강좌 목록

 

코드를 실행하기 위해서는, vscode에서 새로운 파일을 만들고 실행하시면 됩니다.

예를 들어, 7_files.py를 생성하고 코드를 실행합니다.

 

Python 중급 강좌 - 7. 파일작업(File read/write)

이번 강좌는 파일작업입니다. 실제로, 파일을 읽고 쓰는 과정과 여러 팁을 이번 강좌에서 진행합니다.

 

Stream 개체를 이용해 파일처리

파일을 열때에는 이렇게 stream 개체를 만들어 처리합니다.

아래의 이미지와 같이, 파일을 읽기 목적으로 쓸지 아니면 쓰기 목적으로 열기 등을 결정해 진행합니다.

Slide2.JPG

기본 옵션은 이렇게 읽기(Read)이고, 텍스트(Text) 파일을 읽고 처리합니다.

 

파일 읽기(file read)

다음 Python 코드를 통해 파일 읽기 작업을 수행할 수 있습니다.

# demo.txt 파일을 열고, 내용을 읽음 
# clone한 more-python-for-beginners/07 - Reading and writing files/demo.txt 파일 참조
stream = open('./demo.txt', 'rt')

print('\nIs this readable? ' + str(stream.readable()))
print('\nRead one character : ' + stream.read(1))
print('\nRead to end of line : ' + stream.readline())
print('\nRead all lines to end of file :\n' + str(stream.readlines())+ '\n')

 

파일 쓰기(file write)

다음과 같은 코드로 파일 쓰기 작업을 진행합니다.

# 쓰기 작업을 하기 위해 output.txt를 텍스트 파일로 열고 객체를 가져옴
stream = open('output.txt', 'wt')

print('\nCan I write to this file? ' + str(stream.writable()) + '\n')

stream.write('H') # 한줄 문자열 작성 
stream.writelines(['ello',' ','world']) # 여러줄의 문자열 작성
stream.write('\n') # 새줄(new line) 작성

names = ['Susan','Christopher']
stream.writelines(names)

# 리스트의 각 항목 사이에 새줄을 추가하는 깔끔한 방법
stream.write('\n')  # 새줄 작성
stream.writelines('\n'.join(names)) 
stream.close() # 파일 스트림을 flush하고 close

 

 

파일 스트림 작업

파일 작업시 Stream 작업이 약간 생소할 수 있습니다. seek 명령을 이용하면, 현재 스트림의 작업 위치를 변경하고, 필요한 작업을 수행할 수 있습니다. flush는 이런 stream을 파일로 실제 쓰는 처리 과정을 flush 작업이라고 부릅니다.

# 텍스트 쓰기 작업을 위해 manage.txt 파일 객체를 가져옵니다.
stream = open('manage.txt', 'wt')

# 파일스트림에 demo 단어를 작성
stream.write('demo!')

# 파일스트림의 시작 위치로 이동
stream.seek(0)

# cool 단어를 파일시스템에 작성
stream.write('cool')

# 파일 버퍼로 파일스트림 콘텐트를 flush(플러시) - 실제 파일로 쓰기
stream.flush()

# 파일스트림을 flush하고 파일 close
stream.close()

 

 

Python에서 빈(empty) 파일 생성

추가적으로, 가끔 빈 파일을 만들어야 할 경우가 있습니다. pathlib에서 touch()를 이용하면 편리합니다. bash 명령과 유사하죠.

from pathlib import Path
Path('/tmp/file.txt').touch()

 

 

Python에서 파일을 줄단위(line by line)로 읽어 list에 저장하는 다른 방법

위에서 간략한 방법도 소개하고 있지만, 워낙 자주 쓰이는 처리라서 잘 정리해 두시면 좋습니다.

with open(filename) as f:
    content = f.readlines()
# you may also want to remove whitespace characters like `\n` at the end of each line
content = [x.strip() for x in content] 

이렇게 readlines()를 이용해 list로 append할 수 있습니다.

참고링크 : python - How to read a file line-by-line into a list? - Stack Overflow

 

Python에서 json 파일을 읽어 dictionary 데이터형으로 저장하는 방법

import json 
f = open('JSON_FILENAME.json',) 
data = json.load(f)  # data는 dict로 리턴됩니다.

이렇게 dict로 로드할 수 있습니다. 이후 JSON 탐색 등은 이전 SQLER의 강좌를 참고하세요.

개발자 커뮤니티 SQLER.com - Python 초급 강좌 목차 - 17. JSON 데이터 처리

 

Python에서 CSV 파일을 읽어서 pandas DataFrame으로 저장하는 방법

# pip install pandas로 설치
import pandas as pd
titanic_data = pd.read_csv('CSV_FILE.csv')
# df를 CSV로 저장할 경우 to_csv()로 저장

 

CSV를 로드해 pandas DataFrame 으로 처리하는 상세한 방법은, 이후 머신러닝 강좌에서 진행 예정이니 도움 되시길 바랍니다.

 

수고하셨습니다.

 

참고자료

개발자 커뮤니티 SQLER.com - Python 무료 강좌 - 기초, 중급, 머신러닝

c9-python-getting-started/more-python-for-beginners/07 - Reading and writing files at master · CloudBreadPaPa/c9-python-getting-started (github.com)

python - How to read a file line-by-line into a list? - Stack Overflow

 

No. Subject Author Date Views
Notice Python 무료 강좌 - 기초, 중급, 머신러닝(2021년 1월 업데이트) 코난(김대우) 2021.01.01 322
103 Python 중급 강좌 - 9. 비동기 작업(Asynchronous operations): asyncio 코난(김대우) 2021.01.03 155
102 Python 중급 강좌 - 8. 외부 리소스 관리(Managing external resources): with 코난(김대우) 2021.01.03 78
» Python 중급 강좌 - 7. 파일작업(File read/write) file 코난(김대우) 2021.01.03 99
100 Python 중급 강좌 - 6. 파일시스템(File system) 관리 코난(김대우) 2021.01.03 84
99 Python 중급 강좌 - 5. 다중상속(Mixins - multiple inheritance) 코난(김대우) 2021.01.03 73
98 Python 중급 강좌 - 4. 상속(Inheritance) 코난(김대우) 2021.01.03 23
97 Python 중급 강좌 - 3. 클래스(Class) 코난(김대우) 2021.01.03 37
96 Python 중급 강좌 - 2. 람다(Lamda) file 코난(김대우) 2021.01.03 47
95 Python 중급 강좌 - 1. Python 스타일 가이드: 서식(Formatting)과 린팅(Linting) file 코난(김대우) 2021.01.02 65
94 Python 초급 강좌 목차 - 19. 코드에서 중요한 키(패드워드) 관리 - dotenv 코난(김대우) 2021.01.02 34
93 Python 초급 강좌 목차 - 18. 데코레이터(Decorators) 코난(김대우) 2021.01.02 28
92 Python 초급 강좌 목차 - 17. JSON 데이터 처리 file 코난(김대우) 2021.01.02 67
91 Python 초급 강좌 목차 - 16. 외부 웹서비스 API 호출 file 코난(김대우) 2021.01.02 61
90 Python 초급 강좌 목차 - 15. 패키지(Package): import, pip 코난(김대우) 2021.01.02 38
89 Python 초급 강좌 목차 - 14. 함수 파라미터(Parameter) 코난(김대우) 2021.01.02 32
88 Python 초급 강좌 목차 - 13. 함수(Function) 코난(김대우) 2021.01.02 25
87 Python 초급 강좌 목차 - 12. 반복문(Loop): for, while 코난(김대우) 2021.01.02 27
86 Python 초급 강좌 목차 - 11. 컬렉션(Collection): list, array, dictionary file 코난(김대우) 2021.01.02 38
85 Python 초급 강좌 목차 - 10. 조건문(Condition):3 복잡한 조건 처리 코난(김대우) 2021.01.01 29
84 Python 초급 강좌 목차 - 9. 조건문(Condition):2 다중 조건 처리 코난(김대우) 2021.01.01 41





XE Login