새소식

데이터분석/둘째주

파이썬 Python : 텍스트 파일 다루기

  • -
728x90

 

텍스트 파일 관련 기본함수

open(), read(), write(), close() 

텍스트 파일     ②    ③ 
──     open( )     ── read()  or  write( ) ─→     close( )    
  파일 열기   읽기 또는 쓰기   파일 닫기

 

 

파일 쓰기: write( )

write( ) 함수를 이용한 파일에 문자열 쓰기

 

 【  파일 객체를 담은 변수명.write(데이터)  】     

열린 파일에 데이터가 쓰여진다.

반환값이 있으며, 이는 쓰여진 문자열의 갯수이다.

 

file = open('경로/~/파일명.txt', 'w')	#w - 쓰기모드, r - 읽기모드
#w - 쓰기모드 : 파일명이 있으면 열고, 열으면 새로 생성해서 연다.
#		기존의 내용은 없애고 새로운 내용으로 덮어쓴다.
#r - 읽기모드 : 파일명이 없으면 오류가 난다.

strCnt = file.write('Hello world~!')
print(f'strCnt: {strCnt}')

file.close()
-- 출력 --
strCnt: 13

 

[실습]

다음과 같이 시스템 시간과 일정을 텍스트 파일에 작성해보자.

예시) [2023년 11월 1일] python study

 

 

import time
lt = time.localtime()
# dataStr = '[' + str(lt.tm_year) + '년' + \
# 		str(lt.tm_mon) + '월' +\
# 		str(lt.tm_mday) + '일]'

dataStr = '[' + time.strftime('&Y-%m-%d %H:%M:%S %p') + ']'
# &Y: 년, %m: 월, %d:일, %H:시(24시간제 표시), %I:시, %M:분, %S:초, %p:Am/Pm

todaySchedule = input('오늘 일정: ')

file = open('경로/~/파일명.txt', w)
file.write(dataStr + todaySchedule)
file.close()
-- 출력 --
오늘 일정: python study

 

 

 

파일 읽기: read( )

read( ) 함수를 이용한 파일 문자열 읽기

 

 【  파일 객체를 담은 변수명.read()  】     

 

 

file = open('경로/~/파일명.txt', 'r')	#w - 쓰기모드, r - 읽기모드

strContent = file.read()
print(f'str: {strContent}')

file.close()

 

[실습] 다음 텍스트 파일에서 'Python'을 '파이썬'으로 변경해서 파일에 다시 저장해보자.

about_python.txt
Python은 1991년 프로그래머 귀도 반 로섬이 발표한 고급 프로그래밍 언어로, 플랫폼에 독립적이며 인터프리터식, 객체지향적, 동적 타이핑(dynamically typed) 대화형 언어이다. Python이라는 이름은 귀도가 좋아하는 코미디 <Monty Python's Flying Circus>에서 따온 것이다.
file = open('about_python.txt', 'r', encoding='utf8')

str = file.read()
str = str.replace('python','파이썬', 2)	#2개만 변경

file.close()

print(f'str: {str}')

file = open('about_python.txt', 'w', encoding='utf8')
file.write(str)
file.close()

 

 

 

 

 

파일 읽기: open( )

파일모드 인수로 목적에 맞게 파일을 열 수가 있다.

 

 【  open('파일명', '파일모드', encoding='')  】     

파일모드

  • w : 쓰기 전용 (파일 덮어쓰기)
  • a : 쓰기 전용 (파일 덧붙임)
  • x : 쓰기 전용 (파일이 있으면 에러 발생)
  • r : 읽기 전용 (파일이 없으면 에러 발생)

 

url = '경로/~/'

# w 모드 : 덮어쓰기
file = open(url+'파일명.txt', 'w')
file.write('Hello python!!')
file.close()

# a 모드 : 덧붙임
file = open(url+'파일명.txt', 'a')
file.write('\nNice to meet you!!')
file.close()


# x 모드 : 기존에 파일이 있으면 에러
file = open(url+'파일명_01.txt', 'x')
file.write('\nNice to meet you!!')
file.close()


# r 모드 : 파일 읽기
file = open(url+'파일명.txt', 'r')
str = file.read()
print(f'str: {str}')
file.close()

 

[실습] 사용자가 입력한 숫자에 대한 소수를 구하고 이를 파일에 작성해보자.

#소수: 1과 자신 이외의 어떤 수로도 나누어지지 않는 수
#약수: 나머지 없이 나눠지는 수
#합성수: 약수가 1과 자신이외에 더 있어서 3개이상인 수

url = '경로/~/'

def writePrimeNumber(n):
	file = open(url+'파일명.txt', 'a')
	file.write(str(n))
    file.write('\n')
	file.close()

inputNumber = int(input('0보다 큰 정수 입력: '))

for num in range(2, (inputNumber + 1)):
	flage = True
	
	for n in range(2, num):
    	if num % n == 0:
			flage = False
            break

	if (flage):
    	writePrimeNumber(num)

 

 

 

 

 

파일 닫기: close( ), with ~ as

with ~ as 문을 이용하면 close를 생략할 수 있다.

 

 【  파일 객체를 담은 변수명.close()  】     

 

 【  with open(파일명, 파일모드) as 별칭:  】     

 【          별칭.read()                                  】     

 【          별칭.write('텍스트')                    】     

 

url = '경로/~/'

file = open(url+'파일명.txt', 'a')
file.write('Hello python!!')
file.close()

# with ~ as문으로 하면~
with open(url+'파일명.txt', 'a') as f:
	f.write('Hello python!!')

 

[실습]

로또 번호 생성기 프로그램을 만들고, 파일에 번호를 출력해보자.

import random

url = '경로/~/'

def writeNumbers(nums):
	for idx, num in enumerate(nums):
		with open(url + '파일명.txt', 'a') as f:
			if idx < (len(nums)-2):
				f.write(str(num) + ', ')
			elif idx == (len(nums)-2):
				f.write(str(num))
			elif idx == (len(nums)-1):	#마지막 번호는 보너스 번호
				f.write('\n')
				f.write('bonus: ' + str(num))
				f.write('\n')

rNums = random.sample(range(1, 46), 7)
print(f'fNums: {rNums}')

writeNumbers(rNums)

 

 

 

반응형
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.