반응형
Index
Python 에서는 사용자가 직접 입력하고 터미널에 결과값을 출력하는 방식 외에도, 파일을 통해 입출력 할 수 있다. 파일을 새로 만든 다음, 프로그램이 만든 결과값을 새 파일에 적어보고, 적은 내용을 읽고, 새로운 내용을 추가해보는 것 까지 해보자.
1. 파일 생성하기
- Python 에서 파일 생성은 아래와 같이 open 함수를 통해 생성한다 : 파일 객체 = open(파일 이름, 파일 열기 모드)
- 한글을 쓰려면 꼭 encoding="utf8" 넣어줘야한다.
- 아래 예시코드를 실행하면, new_file 이라는 text 파일에 아래 3개 줄이 출력되겠다.
f = open('new_file.txt', 'w', encoding='utf8')
print("파일에 글을 써볼게", file=f)
print("한줄 더 써볼게", file=f)
f = open('new_file.txt', 'a', encoding='utf8')
f.write("이건 기존 파일에 덛붙여 쓰는거야")
f = open('C:/sbspace/neww__file.txt','w') #파일을 특정 디렉토리에 생성하고 싶을때
- 파일 열기 모드에는 아래와 같이 3가지가 있다. (열기모드를 입력하지 않으면 r 이 티폴트다)
- 파일을 쓰기 모드로 열면 해당 파일이 이미 존재할 경우 원래있던 내용이 모두 사라지고, 해당 파일이 존재하지 않으면 새로운 파일이 생성된다
r | 읽기모드 - 파일을 읽기만 할 때 사용 |
w | 쓰기모드 - 파일에 내용을 쓸 때 사용 |
a | 추가모드 - 파일의 마지막에 새로운 내용을 추가 시킬 때 사용 |
파일 경로와 슬래시(/) - 3가지 방법
파이썬 코드에서 파일 경로를 표시할 때 "C:/doit/새파일.txt" 처럼 1. 슬래시(/)를 사용할 수 있다. 만약 역슬래시(\)를 사용한다면 "C:\\doit\\새파일.txt" 처럼 2. 역슬래시를 2개 사용하거나 r"C:\doit\새파일.txt"와 같이 문자열 앞에 3. r 문자(Raw String)를 덧붙여 사용해야 한다. 왜냐하면 "C:\note\test.txt"처럼 파일 경로에 \n과 같은 이스케이프 문자가 있을 경우 줄바꿈 문자로 해석되어 의도했던 파일 경로와 달라지기 때문이다.
2. 파일을 쓰기 모드로 열어 내용 쓰기
파일을 쓰는 방법은 아래와 같이 2가지가 있다고 볼 수 있다. write 혹은 print(file) 함수를 활용하기
f = open("새파일.txt", 'w', encoding='utf8')
for i in range(1, 11):
# 1. write 로 쓰기
data = "{}번째 줄입니다.\n".format(i)
f.write(data)
# 2. print 로 쓰기
print("{}th row".format(i), file=f)
f.close()
3. 파일을 읽는 여러가지 방법
3-1. readline 함수 이용하기
readline() 호출할때마다 한줄씩 읽는다.
f = open("새파일.txt", 'r', encoding='utf8')
line = f.readline()
print(line) #첫번째 줄 출력
line = f.readline()
print(line) #두번째 줄 출력
f.close()
만약 모든 줄을 읽고 싶다면?
while True:
line = f.readline()
if not line: break
print(line)
3-2. readlines 함수 사용하기
readlines 함수는 파일의 모든 줄을 읽어서 각각의 줄을 아이템으로 갖는 리스트를 반환한다.
파일을 읽을 때 줄 끝의 줄 바꿈(\n) 문자를 제거하고 사용해야 할 경우가 많다.
아래 예시코드의 주석처럼 strip 함수를 사용하면 줄 바꿈 문자를 제거할 수 있다.
f = open("새파일.txt", 'r', encoding='utf8')
lines = f.readlines()
for line in lines:
line = line.strip() # 줄 끝의 줄 바꿈 문자를 제거한다.
print(line)
f.close()
3-3. read 함수 사용하기
read 함수는, 파일에 있는 내용 전체를 문자열 타입으로 리턴한다.
3-4. 파일 객체를 for문과 함께 사용하기
사실 파일은 간단하게 for 문과 함께라면 굳이 readline 과 같은 함수 사용없이 파일을 줄단위로 읽을 수 있다.
with open('새파일.txt', 'r', encoding='utf8') as nf:
for line in nf:
print(line)
nf.close()
4. 파일에 새로운 내용 추가하기
5. with문과 함께 사용하기
반응형
'Study > Python' 카테고리의 다른 글
Pandas 기본 활용법 (2) | 2023.05.26 |
---|---|
Numpy 기본 함수 및 연산 (2) | 2023.05.26 |
[기초문법] 모듈(Module)과 패키지(Package) (1) | 2023.03.05 |
[기초문법] 사용자 정의 함수 , lambda 함수 (1) | 2023.02.28 |
[기초문법] Class, Object(Instance), Method 이해 (1) | 2023.02.27 |
댓글