ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Python] 텍스트파일
    Language/Python 2024. 6. 6. 16:05

    파이썬 내부자원 console창이 아닌 외부자원인 텍스트파일에서 다루기.

    -파이썬 내장함수 open(),read(),write(),close() 를 이용

    open('파일경로','파일모드')

    1) 파일경로

    C:/pythonTxt/test.txt 처럼 역슬래시가 아닌 슬래시로 변경.

     

    2)  파일모드

    - 파일모드는 파일을 어떤목적으로 open할지 정한다.

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

    1. write()

    file = open('C:/pythonTxt/test.txt','w') #파일을 쓰기위해서는 먼저 파일을 열어준다.
    
    strCnt = file.write('Hello')
    print(f'strCnt: {strCnt}')
    
    file.close() #외부자원 연결해제

     

    2. read()

    file = open('C:/pythonTxt/test.txt','r') 
    
    str = file.read()
    print(f'str: {str}')
    
    file.close() #외부자원 연결해제

     

    file = open('D:/pythonTxt/aboutPython.txt','r', encoding='UTF8')
    
    str = file.read()
    print(f'str: {str}')
    
    file.close()
    
    # 읽어온 파일의 텍스트'python' -> '파이썬' 3개 바꾸기
    str = str.replace('Python','파이썬', 3)
    print(f'str: {str}')
    
    # 변경한 내용 덮어쓰기
    file = open('D:/pythonTxt/aboutPython.txt')
    file.wirte(str)
    file.close()

     

    3) with ~ as문

    with ~ as문을 이용하면 파일닫기(close) 를 생략할 수 있다.

    uri = 'D:/pythonTxt/'
    # file = open(uri + 'test.txt','r')
    # str = file.read()
    # print(f'str: {str}')
    # file.close() #외부자원 연결해제
    
    with open(uri + 'test.txt','r') as f:
        print(f.read())

     

    4) writelines()

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

    languages = ['c/c++','java','c#','python','js']
    uri = 'D:/pythonTxt/'
    
     for item in languages:
         with open(uri + 'lang.txt','a') as f:
             f.write(item)
             f.write('\n')

     

    위 코드를 writelines() 함수 사용해 수정.

    languages = ['c/c++','java','c#','python','js']
    uri = 'D:/pythonTxt/'
    
    with open(uri + 'lang.txt','a') as f:
        # f.writelines(languages)
        
        # 개행을 위해 수정.
        f.writelines(item + '\n' for item in languages)

     

    * 자료형(딕셔너리,리스트)을 그대로 저장하기 위해선 아래와 같은 형태로도 사용가능.

    scoreDic = {'kor':85, 'eng':90, 'mat':92, 'his':82}
    
    uri = 'D:/pythonTxt/'
    
    with open(uri+'score.txt','a') as f:
         print(scoreDic,file=f)

    5) readlines(),readline()

    - readlines() : 파일의 모든 데이터를 읽어서 리스트형태로 반환.

    uri = 'D:/pythonTxt/'
    
    with open(uri + 'lang.txt','r') as f:
        langlist = f.readlines()
    
    print(f'langlist : {langlist}')
    print(f'langlist type: {type(langlist)}')
    
    >>>
    langlist : ['c/c++\n', 'java\n', 'c#\n', 'python\n', 'js\n']
    langlist type: <class 'list'>

     

    - readline() : 한 행을 읽어서 문자열로 반환

    uri = 'D:/pythonTxt/'
    
    with open(uri + 'lang.txt','r') as f:
        langlist = f.readline()
    
    print(f'langlist : {langlist}')
    print(f'langlist type: {type(langlist)}')
    
    >>>
    langlist : c/c++
    langlist type: <class 'str'>

    'Language > Python' 카테고리의 다른 글

    [Python] 예외  (0) 2024.06.04
Designed by Tistory.