python - 파일 열기 쓰기 읽기 닫기

slocat·2023년 11월 8일
0

start-data

목록 보기
7/75

텍스트 파일 쓰기

# 파일 열기: open()
# 'w' 모드 ➡ 파일이 없으면 파일을 생성함
file = open('C:/Users/file.txt', 'w')

# 쓰기: write()
# 'w' ➡ 기존 텍스트는 삭제되고 새로운 텍스트가 덮어 씌움
# 작성한 텍스트 길이가 반환됨
strCnt = file.write('Hello Python')

# 파일 닫기: close()
file.close()

텍스트 파일 읽기

# 파일 열기: open()
# 'r' 모드 ➡ 파일이 없으면 error!
# cp949 발생하면 ➡ encoding='UTF8' 추가
file = open('C:/Users/file.txt', 'r')

# 읽기: read()
# 문자열로 읽어짐
str = file.read()
print(f'파일 내용: {str}')

# 파일 닫기: close()
file.close()

텍스트 파일 열기 모드

'w'(write) - 쓰기 전용(파일이 있으면 덮어 씌움)
'a'(append) - 쓰기 전용(파일이 있으면 덧붙임)
'x'(create) - 쓰기 전용(파일이 있으면 에러 발생)
'r'(read) - 읽기 전용(파일이 없으면 에러 발생)

파일 닫기 생략하기 : with ~ as문

with open('C:/Users/file.txt', 'a') as f:
    f.write('내용을 입력하세요.\n')

with open('C:/Users/file.txt', 'r') as f:
    print(f.read())

반복 가능한 자료형의 데이터를 쓸 때 : writelines()

numbers = ['10', '20', '30']

with open('C:/Users/file.txt', 'a') as f:
    f.writelines(numbers)
    
>>>
102030
numbers = ['10', '20', '30']

with open('C:/Users/file.txt', 'a') as f:
    f.writelines(item + '\n' for item in numbers)

>>>
10
20
30

여러 줄 읽기 : readlines()

# file.txt
hello python
not easy
but funny!
# readlines(): 모든 데이터를 읽어서 한 줄씩 리스트 형태로 반환
with open('C:/Users/file.txt', 'r') as f:
    text = f.readlines()

print(text)
print(type(text))

>>>
['hello python\n', 'not easy\n', 'but funny!\n']
<class 'list'>

한 줄 읽기 : readline()

# readline(): 한 행을 읽어서 문자열로 반환
with open('C:/Users/file.txt', 'r') as f:
    # 맨 처음에 첫 줄을 읽고,
    line = f.readline()

    # 첫 줄에 내용이 있다면(공백이 아니라면) 실행
    while line != '':
        print(f'{line}', end='')
        line = f.readline()

print(line)  # 마지막에 읽은 곳에는 공백이 있음
print(type(line))

>>>
hello python
not easy
but funny!

<class 'str'>

* 연월일 시분초 원하는 형식으로 출력하기

import time

lt = time.localtime()

# %H - 17시
# %I - 5시
dateStr = '[' + time.strftime('%Y-%m-%d %H:%M:%S %p') + ']'
print(dateStr)

>>>
[2023-11-08 18:10:39 PM]

* 특정 문자열 변경하기 : replace()

# replace(대상 문자열, 변경할 문자열)
text = '나는 오늘 아침에 샌드위치 먹었어. 너는 아침 뭐 먹었어?'

text = text.replace('아침', '저녁')
print(text)

>>>
나는 오늘 저녁에 샌드위치 먹었어. 너는 저녁 뭐 먹었어?
# replace(대상 문자열, 변경할 문자열, 변경할 횟수)
text = '나는 오늘 아침⭕에 샌드위치 먹었어. 너는 아침❌ 뭐 먹었어?'

text = text.replace('아침', '저녁', 1)
print(text)

>>>
나는 오늘 저녁에 샌드위치 먹었어. 너는 아침 뭐 먹었어?

* 문자열 나눠서 리스트로 만들기 : split()

text = 'kor:85'
result = text.split(':')
print(result)

>>>
['kor', '85']

0개의 댓글