본문 바로가기
Python

[IDLE] 파일 입출력

by amoomar 2022. 5. 4.
반응형

목차는 아래와 같다.

1. 파일의 입출력
2. 실습
3. 예제(데이터 분석과 수정)

 

 

 

1. 파일의 입출력

 

출력을 위해 txt파일을 생성한다. 이때 파일의 위치는 일반적으로 IDLE파일이 존재하는 디렉토리내에 함께 있어야한다. 또는 절대경로를 작성하여 파일을 참조할 수 있도록 하는 방법도 있다.

파일의 위치

 

 

 

 

 

open의 인자로 적절한 값을 준다면 그 하단의 로직을 정상적으로 수행할 수 있다.

# 파일 읽어오기(전체)
#open('파일명','모드:어떻게, 무엇을 읽을것인지')
#이때 파일명에는 절대경로 등을 활용할 수 있다.
file=open('a.txt', 'rt')
msg=file.read() #인자값을 주어 해당 index만큼만 불러올 수 있다.
print(msg)
file.close()

 

 

 

 

실습시 a.txt가 읽히지 않아서, 파일을 참조하지 못하는가 싶은 생각에 파일을 입력하여 인식하고 있는 디렉토리를 파악하였다.

#존재하는 파일을 작성하면 덮어쓰기
# 없는 파일을 작성하면 파일 생성
file=open('b.txt', 'wt')
file.write('hello\n') # 들여쓰기
file.write('파일 입출력 실습')
file.close() #파일 객체 닫기

 

 

 

본인의 경우 Python폴더 내에 스크립트파일을 별도 보관 할 목적으로 workspace라는 폴더를 생성했는데, 해당 파일 내부에 저장되는 것으로 보아 a.txt파일을 해당 폴더로 옮기면 해결되리라 판단하고 처리하였다.

파일의 위치

 

 

 

 

먼저 파일의 입력을 우선으로 확인해보면 아래와 같이 정상 수행된 모습을 확인할 수 있다.

파일의 입력

 

 

 

 

 

a.txt파일 역시 입력된 파일이 생성된 폴더 위치로 이동하고 나니 아래와 같이 정상적으로 출력되는 모습을 확인할 수 있다.

 

출력 결과이다.

 

 

 

 

위의 예시는 간단한 입출력만을 다루어보았고, 파일의 입출력에 대해 조금 더 자세한 내용 확인은 아래의 링크에 접속하는 방법으로 가능하다.

 

http://www.tcpschool.com/python2018/python_io_file

 

코딩교육 티씨피스쿨

4차산업혁명, 코딩교육, 소프트웨어교육, 코딩기초, SW코딩, 기초코딩부터 자바 파이썬 등

tcpschool.com

 

 

 


 

 

2. 실습

 

파일의 입력으로 작성한 txt형식의 파일을 다시 불러와, 불러온 문자열의 길이를 출력하는 예제이다.

# txt파일을 작성
file=open('test02.txt','wt')
file.write('이상해\n')
file.write('왜 자꾸\n')
file.write('글자수가\n')
file.write('안맞지\n')
file.write('?\n')
file.close()

# 한 줄씩 불러오며, 해당 라인의 문자열 길이도 출력
file=open('test02.txt', 'rt')
while True:
    msg=file.readline()
    if msg=='':
        break
    msg=msg[:-1]#tap까지 길이로 인식해서 해결하기 위해
    print('불러온 라인: '+msg, end='')
    print('문자열 길이: ',+len(msg))
file.close()

len()함수를 활용하여 문자열의 길이를 분석하였는데, \n까지를 문자열로 인식하여 순수 문자열 길이+1로 반환 되는 이슈가 있었다.

해당 이슈 해결을 위해 문자열 슬라이스기능을 활용하여, 순수한 문자열 길이만을 반환할 수 있도록 하였다.

 

 

 

실행 결과는 아래와 같다.

실행 결과

 

 

 

 

* 응용 *

input을 통해 입력된 내용을 txt파일에 저장하고, 저장된 입력 내용의 문장별로 문자열 길이를 반환하도록 구현하였다.

file=open('test.txt','wt')
for i in range(3):
    msg=input('단어입력: ')
    file.write(msg+'\n')
file.close()

file=open('test.txt','rt')
while True:
    msg=file.readline()
    if msg=='':
        break
    msg=msg[:-1]
    print(msg+' ->',len(msg))
file.close()

위의 코드를 통해 단어를 3회 입력받고, 해당 단어들의 길이를 반환할 수 있다.

 

 

 


 

 

3. 예제(데이터의 분석과 수정)

 

요구사항

 

 

 

 

 

 

수정 예정인 파일의 내용은 아래와 같다.

수정할 파일

 

 

 

 

 

풀이는 아래와 같이 하였다.

'''
참고 링크
https://itisik.tistory.com/83
https://www.delftstack.com/ko/howto/python/python-replace-string-in-file/
'''

data="011" #찾을 번호
read="" #읽어온 txt 내용물
cnt=0 #011데이터의 개수

# 1. count()를 활용하여 몇건의 수정사항이 있는지 확인
with open("연락처.txt", "rt") as file:
    read=file.read()
    cnt=read.count(data)

print("총 "+str(cnt)+"건의 "+data+" 데이터를 찾았습니다.") # 출력

# 2. 011데이터를 010으로 치환 후 덮어쓰기
with open("연락처.txt", "wt") as file:  
    read=read.replace(data, "010")
    file.write(read)

# 3. 덮어쓰기 된 내용을 다시 불러왔을때 011데이터가 0개라면,
#    모든 데이터가 수정된 것으로 간주
with open("연락처.txt", "rt") as file:
    read=file.read()
    cnt=read.count(data)

if cnt==0:
    print("모든 데이터를 수정했습니다.")

# 4. file닫기
file.close()

 

 

 

결과는 아래와 같다.

출력화면

 

 

 

 

 

코드 실행 후의 파일 모습이다. 정상 수행된 것을 확인할 수 있다.

코드가 반영된 txt파일의 내용

 

 

 

 

 

 

만일 이때 인코딩과 관련된 이슈가 있는 경우에는 아래와 같이 인코딩 설정을 ANSI로 두어 해결해볼 수 있겠다.

에러 문구

 

 

해결 방법

 

 


 

반응형

'Python' 카테고리의 다른 글

[아나콘다] 데이터 분석 및 가공  (0) 2022.05.10
[IDLE] 데이터 분석 및 가공  (0) 2022.05.10
[IDLE] 객체와 상속  (0) 2022.05.06
[IDLE] 예제와 중복제거  (0) 2022.05.03
[IDLE 설치] 파이썬 입문  (0) 2022.05.02