python - (5) 텍스트 파일 열기, 읽기, 쓰기

jun hyeon·2023년 8월 8일

python

목록 보기
18/21
post-thumbnail

텍스트 파일 다루기

▶ 기본함수

  • open() : 파일 열기
  • read() : 파일 읽기
  • write() : 파일 쓰기
  • close() : 파일 닫기

open()로 열기, write()로 쓰기.

#파일이 없으면 생성, 있으면 열기
file = open('C:/pythonTxt/text.txt', 'w') # '디렉토리(경로)' , '쓰기'

file.write('Hello Python!!!!') # 파일에 쓰기

실행하면 text파일이 생성되면서 코드에서 쓴 내용이 저장된다.


open()로 열기, read()로 읽기.

file = open('C:/pythonTxt/test.txt', 'r')

str = file.read()
print(f'내용 : {str}')
#출력
내용 : [2023-06-21 13:53:09 PM]running

파일속 내용이 출력 창에 출력된다.


▶ 파일모드 w/a/x/r

  • w 쓰기 전용 (파일이 있으면 덮어씌움)
uri = 'C:/pythonTxt/'

# 'w' 다 날리고 덮어씌움
file = open(uri + 'hello.txt', 'w')
file.write('Hello Python~')
file.close()

실행하니, hello.txt가 생기면서 코드에서 적은 내용이 있었다.

  • a 쓰기 전용 (파일이 있으면 덧붙임)
file = open(uri + 'hello.txt', 'a')
file.write('\nNice to meet you!!')
file.close()

실행 후 열어보니 내용이 추가 되어 있었음을 확인.

  • x 쓰기 전용 (파일이 있으면 에러발생)
file = open(uri + 'hello_01.txt', 'x')
file.write('\nNice to meet you!!')
file.close()

실행 후 hello_01 파일이 생성 됨 그리고 코드에서 쓴 내용이 있었다.

  • r 읽기 전용 (파일이 없으면 에러 발생)
file = open(uri + 'hello_01.txt', 'r')
str = file.read()
print(f'string : {str}')
file.close()

코드 실행하면 출력 창에 파일 속 내용이 출력된다.


with ~ as 구문

코드가 더 간결해지고 close()를 생략할 수 있다.

file = open(uri + '5_037.txt', 'a')
file.write('python study!!!!')
file.close()
with open(uri + '5_037.txt', 'a') as file:
    file.write('python study!!!!!!') # close() 생략

writelines()

리스트 또는 튜플 데이터를 파일에 쓰기 위한 함수.

languages = ['c/c++', 'java', 'c#', 'python', 'javascript']
uri = 'C:/pythonTxt/'

for item in languages:
    with open(uri + 'languages.txt', 'a') as f:
        f.write(item)
        f.write('\n')

writelines()를 쓰면 for문 이하의 내용을 좀 더 간결하게 바꿀 수 있다.

languages = ['c/c++', 'java', 'c#', 'python', 'javascript']
uri = 'C:/pythonTxt/'

with open(uri + 'languages.txt', 'a') as file:
    file.writelines(item + '\n' for item in languages)

결과


readlines()

파일의 모든 데이터를 읽어서 '리스트' 형태로 반환한다.
한줄만 읽으려면 readline()

uri = 'C:/pythonTxt/'

#readlines() - 다 읽기
with open(uri + 'lans.txt', 'r') as f:
    lanList = f.readlines()

print(f'lanList : {lanList}')
print(f'lanList type: {type(lanList)}')

print('-'*30)

#readline() - 한줄만 읽기
with open(uri + 'lans.txt', 'r') as f:
    line = f.readline()

    while line != '':
        print(f'{line}', end='')
        line = f.readline()
#출력
lanList : ['hello python\n', 'hello c/c++\n', 'hello java\n', 'hello javascript']
lanList type: <class 'list'>
------------------------------
hello python
hello c/c++
hello java
hello javascript

0개의 댓글