2021.11.28 - [Python/os] - Python 현재 작업 경로 가져오기(os.getcwd)
파이썬 관련 포스팅 목록
2020/06/19 - [Linux/Python] - Python Flask Jinja2 템플릿 사용하기
2020/06/18 - [Linux/Python] - Python Flask 엔드포인트 설정하기
2020/04/29 - [Linux/Python] - Python For문
2019/08/05 - [Linux/Python] - Python Flask 웹 서버 구축하기 - 2
2019/08/04 - [Linux/Python] - Python Flask 웹 서버 구축하기 - 1
Python에서의 파일 읽기/쓰기
안녕하세요 오늘은 파이썬에서 로컬 파일을 읽거나 새로운 파일을 만드는 방법에 대해 알아보겠습니다.
개발을 하다 보면 프로그램의 상태를 기록하거나 참고해야 할 필요가 있습니다. 특정 오류가 발생했고 다음 실행 때는 오류가 발생하지 않도록 하기 위함입니다.
또한 사용자가 한 행위를 관리자가 나중에 이 내용들을 확인하기 위해 사용하기도 합니다. 이러한 기록을 로그라고 합니다.
이러한 로그는 당시 발생하여 기록되지만, 만약 파일로 따로 저장을 해놓지 않는다면 이후 다시 볼 수 없겠죠? 이런 경우를 위해서도 로그를 파일로 쓰기도 합니다.
또한 다른 많은 이유로 로그 파일을 생성합니다.
개발환경
Linux ubuntu 16.04 LTS x64
Python 3.5.2
Python 2 버전 대와 3버전 대의 API 차이가 크기 때문에 이 포스팅을 참고한다면 반드시 3 버전을 사용하시길 권합니다
파일 쓰기
파일 쓰기 - 새로운 파일 생성
모듈명: test.py
file = open('new.txt', 'w')
content = 'this is new posting!'
file.write(content)
file.close()
open api의 'w' 옵션으로 파일을 열면 이전 같은 이름의 파일이 같은 경로에 있었더라도 무조건 새로운 파일을 생성합니다.
파일 쓰기 - 기존 파일 마지막에 추가
모듈명: test2.py
file = open('new.txt', 'a')
content = '\nhello world!'
file.write(content)
file.close()
'a' 옵션의 경우 기존 같은 경로에 같은 이름의 파일이 있었다면 해당 파일의 맨 마지막에 내용을 추가합니다.
'\nhello world' 문자열에서 제일 앞 '\n' 문자는 다음 줄 이동을 의미합니다.
파일 읽기
한 줄 단위로 읽기
모듈명: test3.py
file = open('new.txt', 'r')
lines = file.readlines()
print(lines)
file.close()
'r' 옵션을 사용하면 파일의 내용을 읽을 수 있습니다. readlines 함수를 사용하면 한 줄, 한줄 줄 단위로 읽고 리스트 형태로 반환합니다.
파이썬에서 리스트를 출력하면 ['A', 'B'] 와 같이 ','로 아이템을 구분합니다.
전체 읽기
모듈명: test4.py
file = open('new.txt', 'r')
content = file.read()
print(content)
file.close()
'r' 옵션으로 읽기 모드로 파일을 열고 read 함수를 호출하여 전체 데이터를 읽습니다.
로깅 - 예제
아래는 프로그램 실행 시 로깅 파일을 생성하고 특정 API를 호출할 때마다 해당 로그를 파일에 씁니다. 그리고 로그 파일을 열고 내용을 출력하는 함수를 구현한 예제입니다.
log_file = open('log.txt', 'w')
def log(msg):
if log_file: log_file.write(msg + '\n')
def read_log():
file = open('log.txt', 'r')
content = file.read()
file.close()
return content
def add(a, b):
log('add command run : %d + %d' % (a,b))
print(a+b)
def sub(a, b):
log('sub command run : %d - %d' % (a,b))
print(a-b)
def mul(a, b):
log('mul command run : %d * %d' % (a,b))
print(a*b)
def div(a, b):
log('div command run : %d / %d' % (a,b))
print(a/b)
add(1,3)
sub(6,1)
mul(5,5)
div(5,5)
log_file.close()
print('------ LOG READ ------')
log = read_log()
print(log)
마무리
이번 포스팅에서는 파이썬에서 파일 입출력하는 방법에 대하여 알아봤습니다.
파이썬 관련 포스팅 목록
2021.12.02 - [Python/os] - Python 특정 파일 소유자 변경하기(os. chown)
2021.11.28 - [Python/os] - Python 현재 작업 경로 가져오기(os.getcwd)
2020.07.11 - [Python/json] - Python json 파싱(Json, Parsing, Python)
2021.01.08 - [Python/os] - Python 시스템 환경변수 가져오기(os.environ)