Language/Python
[Python] 텍스트파일
Sh-YE
2024. 6. 6. 16:05
파이썬 내부자원 console창이 아닌 외부자원인 텍스트파일에서 다루기.
-파이썬 내장함수 open(),read(),write(),close() 를 이용
open('파일경로','파일모드')
1) 파일경로
C:/pythonTxt/test.txt 처럼 역슬래시가 아닌 슬래시로 변경.
2) 파일모드
- 파일모드는 파일을 어떤목적으로 open할지 정한다.
- 'w' : 쓰기전용 (파일이 있으면 덮어씌움)
- 'a' : 쓰기전용 (파일이 있으면 덧붙임)
- 'x' : 쓰기전용 (파일이 있으면 에러발생)
- 'r' : 읽기전용 (파일이 없으면 에러발생)
1. write()
file = open('C:/pythonTxt/test.txt','w') #파일을 쓰기위해서는 먼저 파일을 열어준다.
strCnt = file.write('Hello')
print(f'strCnt: {strCnt}')
file.close() #외부자원 연결해제
2. read()
file = open('C:/pythonTxt/test.txt','r')
str = file.read()
print(f'str: {str}')
file.close() #외부자원 연결해제
file = open('D:/pythonTxt/aboutPython.txt','r', encoding='UTF8')
str = file.read()
print(f'str: {str}')
file.close()
# 읽어온 파일의 텍스트'python' -> '파이썬' 3개 바꾸기
str = str.replace('Python','파이썬', 3)
print(f'str: {str}')
# 변경한 내용 덮어쓰기
file = open('D:/pythonTxt/aboutPython.txt')
file.wirte(str)
file.close()
3) with ~ as문
with ~ as문을 이용하면 파일닫기(close) 를 생략할 수 있다.
uri = 'D:/pythonTxt/'
# file = open(uri + 'test.txt','r')
# str = file.read()
# print(f'str: {str}')
# file.close() #외부자원 연결해제
with open(uri + 'test.txt','r') as f:
print(f.read())
4) writelines()
writelines()는 리스트 또는 튜플 데이터를 파일에 쓰기위한 함수이다.
languages = ['c/c++','java','c#','python','js']
uri = 'D:/pythonTxt/'
for item in languages:
with open(uri + 'lang.txt','a') as f:
f.write(item)
f.write('\n')
위 코드를 writelines() 함수 사용해 수정.
languages = ['c/c++','java','c#','python','js']
uri = 'D:/pythonTxt/'
with open(uri + 'lang.txt','a') as f:
# f.writelines(languages)
# 개행을 위해 수정.
f.writelines(item + '\n' for item in languages)
* 자료형(딕셔너리,리스트)을 그대로 저장하기 위해선 아래와 같은 형태로도 사용가능.
scoreDic = {'kor':85, 'eng':90, 'mat':92, 'his':82}
uri = 'D:/pythonTxt/'
with open(uri+'score.txt','a') as f:
print(scoreDic,file=f)
5) readlines(),readline()
- readlines() : 파일의 모든 데이터를 읽어서 리스트형태로 반환.
uri = 'D:/pythonTxt/'
with open(uri + 'lang.txt','r') as f:
langlist = f.readlines()
print(f'langlist : {langlist}')
print(f'langlist type: {type(langlist)}')
>>>
langlist : ['c/c++\n', 'java\n', 'c#\n', 'python\n', 'js\n']
langlist type: <class 'list'>
- readline() : 한 행을 읽어서 문자열로 반환
uri = 'D:/pythonTxt/'
with open(uri + 'lang.txt','r') as f:
langlist = f.readline()
print(f'langlist : {langlist}')
print(f'langlist type: {type(langlist)}')
>>>
langlist : c/c++
langlist type: <class 'str'>