티스토리 뷰
텍스트 파일 입출력
- 키보드 입력 : input()
- 모니터 출력 : print()
- 외부 파일 읽기 : read(), readline(), readlines()
- 외부 파일로 저장 : write(), writelines()
# 과정
1) 파일 열기
변수명 = open('FileName', 'Mode')
Mode :
- r (읽기,default)
- w (쓰기)
- r+ (읽기+쓰기)
- a (이어쓰기)
- t (텍스트 파일 처리,default)
- b (이진 파일 처리)
# 2. 파일 처리
readlines()
str = ''
while True : # 반복문을 사용하여 파일에 있는 행 읽기
str = file.readline() # 빈 리스트의 메모리 영역에 파일을 한 줄씩 읽어 저장
if str == '':
break
print(str, end='')
# 3. 파일 닫기
변수명.close() # 메모리 누수(out of memory ) 방지
# 파일 읽기
1. 외부 텍스트 파일을 한 번에 모두 읽기
def read_txt(filename) :
str = ''
file = open(filename,'r')
str = file.readlines()
return(str)
file.close()
================ RESTART: D:/Aaron/Q.py ================
>>> read_txt('test1.txt')
['1, 2, 3, 4\n', '5, 6, 7, 8'] # 개행문자가 포함되어 읽혀짐
2. 외부 텍스트 파일을 한 줄씩 읽기
# 2-1)
def read_txt(filename) :
str = ''
file = open(filename,'r')
str = file.readlines()
for li in str :
print(li, end='')
file.close()
================ RESTART: D:/Aaron/Q.py ================
>>> read_txt('test1.txt')
1, 2, 3, 4
5, 6, 7, 8
# 2-2)
def read_txt(filename) :
str = ''
file = open(filename,'r')
while True :
str = file.readline()
if str == '' :
break
print(str, end='')
file.close()
================ RESTART: D:/Aaron/Q.py ================
>>> read_txt('test1.txt')
1, 2, 3, 4
5, 6, 7, 8
# 2-3)
with~as 문 # close() 함수 생략이 가능한 문법, close() 함수의 부재로 인한 메모리 누수 방지
def read_txt(filename) :
str = ''
with open(filename,'r') as file :
str = file.readlines()
for li in str :
print(li, end='')
================ RESTART: D:/Aaron/Q.py ================
>>> read_txt('test1.txt')
1, 2, 3, 4
5, 6, 7, 8
3. 분리 구분기호로 데이터 분리
def read_txt(filename, sep='') :
str = ''
file = open(filename,'r')
str = file.readlines()
for i in range(0, len(str)) :
str[i] = str[i].strip().split(sep)
return(str)
file.close()
================ RESTART: D:/Aaron/Q.py ================
>>> l1 = read_txt('test1.txt',',')
>>> l1
[['1', ' 2', ' 3', ' 4'], ['5', ' 6', ' 7', ' 8']]
4. 분리 구분기호와 포맷 전달
def read_txt(fname, fmt, sep='') :
file = open(fname, 'r')
str = file.readlines()
l2 = []
for a in str :
ll = a.strip().split(sep)
l1 = []
for b in ll :
l1.append(fmt(b))
l2.append(l1)
return(l2)
file.close()
================ RESTART: D:/Aaron/Q.py ================
>>> l1 = read_txt('test1.txt',int,',')
>>> l1
[[1, 2, 3, 4], [5, 6, 7, 8]]
# 파일 저장
1. 사용자 입력 내용을 파일로 저장
def write_txt(filename, sep='') :
l1 = []
str = ''
outFile = open(filename,'w')
while True :
str = input('input : ')
if str !='' :
outFile.writelines(str + sep)
else :
break
outFile.close()
print('[ 파일 저장 완료 ]')
================ RESTART: D:/Aaron/Q.py ================
>>> l1 = [1,2,3,4,5,6,7,8]
>>> write_txt('wtest.txt', sep=' ')
input : 1
input : 2
...
input : 7
input : 8
input :
[ 파일 저장 완료 ]
=================================================
'wtest.txt'
1 2 3 4 5 6 7 8
2. 리스트 내용을 파일로 저장(1차원 리스트)
def write_txt(list, fname, sep) :
file = open(fname, 'w')
vstr = ''
for a in list :
vstr = vstr + str(a) + sep
vstr = vstr.rstrip(sep) # 마지막에도 추가되는 sep을 삭제
file.writelines(vstr) # 한 라인씩 저장
file.close()
print('[ 파일 저장 완료 ]')
================ RESTART: D:/Aaron/Q.py ================
>>> l1 = [1,2,3,4,5,6,7,8]
>>> write_txt(l1, 'wtest.txt', sep=',')
[ 파일 저장 완료 ]
=================================================
'wtest.txt'
1,2,3,4,5,6,7,8
3. 리스트 내용을 파일로 저장(2차원 리스트)
def write_txt(list, fname, sep) :
file = open(fname, 'w')
vstr = ''
for a in list :
for b in a :
vstr = vstr + str(b) + sep
vstr = vstr.rstrip(sep) # 마지막에도 추가되는 sep을 삭제
vstr = vstr + '\n'
file.writelines(vstr) # 한 라인씩 저장
file.close()
print('[ 파일 저장 완료 ]')
================ RESTART: D:/Aaron/Q.py ================
>>> l1 = [[1,2,3,4],[5,6,7,8]]
>>> write_txt(l1, 'wtest.txt', sep=',')
[ 파일 저장 완료 ]
=================================================
'wtest.txt'
1,2,3,4
5,6,7,8
4. 리스트 내용을 파일로 저장(1, 2차원리스트 모두 가능)
5. 리스트 내용을 파일로 저장(불규칙한 크기의 2차원 리스트)
'Python > Collection' 카테고리의 다른 글
[Python] 파이썬으로 폴더(파일)명 변경하기 - os.rename (1) | 2019.04.27 |
---|---|
[Python] 파이썬으로 폴더 생성하기 - os.makedirs (0) | 2019.04.27 |
[Python] 엑셀(excel) 파일 불러오기 - xlrd, openpyxl 패키지 (0) | 2019.02.14 |
[Python] csv 파일 불러오기 - np.read_csv, np.read_table (0) | 2019.02.13 |
[Python] Numpy 텍스트파일 저장, 불러오기(savetxt, loadtxt) (0) | 2019.02.01 |