• 2020. 7. 7.

    by. 윈썸지니

    반응형

     

    이번 포스팅은 파일 처리의 마지막으로 파일 생성 및 쓰기를 해 봅니다.

    파일 쓰기 모드는 이전 포스팅을 참고해 주세요.

     

    이전 포스팅을 먼저 참고해 주세요.

    [IT 이야기 공간/프로그램 언어 및 Database] - 파이썬(Python) 파일 입출력 #1 열기 및 생성하기

     

    파이썬(Python) 파일 입출력 #1 열기 및 생성하기

    이번 포스팅은 프로그램을 개발하다 보면 아주 많이 사용하는 파일 처리에 대해 알아봅니다. 어떤 텍스트 파일을 열어서 읽거나 쓰기를 하는 프로그램을 개발한다고 가정합니다. 처리 순서는 ��

    jinisbonusbook.tistory.com

    ◆ 파일 쓰기

     

    파일을 쓰기 할 때도 파일을 오픈합니다.

    파일오픈 -> 파일 쓰기 -> 파일 닫기 이것이 규칙입니다.

    mode 는 다시 한번 간단하게 설명합니다.

    • w :  파일이 없으면 생성하여 쓰기 모드. 만약 기존 파일이 존재하면 overwrite
    • a : 파일 끝에 추가하기. 파일이 없을 경우 새로 생성

    쓰기는 wite() , writelines() 메소드를 사용합니다.

    >>> f = open( 'c:/py_test/file_test1.txt' , mode='wt’ )          ## 파일은 없어서 새로 만듭니다.

    >>> f.write( "python is easy" )                        ## 개행 문자를 입력하지 않았습니다.
    14
    >>> f.write( "I am Happy\n" )                        ## 개행 문자를 입력합니다.
    11
    >>> f.write("한글을 입력합니다\n")
    10                                                                        ## 반환 값은 바이트수가 아니고 글자수 입니다.
    >>> f.close()                                                      ## 꼭 해주어야 실제 파일에 write 해 줍니다. 안 하면 write 안 될 수 있습니다.
    >>> 

    실제 파일을 열어보니 아래와 같이 작성되어 있습니다.

    개행 문자를 넣지 않으면 라인 구분이 안되고 같은 라인에 연결됩니다.

    python is easyI am Happy
    한글을 입력합니다

     

    이번에는 a 모드로 파일을 오픈해 봅니다.

    아래 코드를 file_write.py 로 작성합니다.

    f = open( 'c:/py_test/file_test2.txt' , mode='at' )
    f.write( "python is easy" )
    f.write( "I am Happy\n" )
    f.write("한글을 입력합니다\n")
    f.close()

     

    명령창에서 두 번 실행해 봅니다.

    C:\py_test>python file_write.py

    C:\py_test>python file_write.py

    C:\py_test>

     

    파일을 확인해 보니 file_test2.txt 로 생성되었고 파일 끝에 추가되어 두 번 write 되었습니다.

    python is easyI am Happy
    한글을 입력합니다
    python is easyI am Happy
    한글을 입력합니다

     

    with 구문을 연습해 봅니다.

    아래와 같이  코드를 작성합니다.

    with open( ‘c:/py_test/file_test3.’ , mode=‘wt’ ) as f :
        for I in range( 3) :
            f.write( “ write test: %d\n” % I )

    명령창에서 두 번 실행해 봅니다.

    C:\py_test>python file_write.py

    C:\py_test>python file_write.py

    C:\py_test>

     

    file_test3.txt 결과 파일입니다.

    두 번 실행을 했어도 overwrite 해서 한번 만 쓰여집니다.

     write test: 0
     write test: 1
     write test: 2

     

    writelines() 의 예를 작성합니다.

    읽기에서 readlines()를 했기 때문에 예상했을 것입니다.

    리스트를  write 합니다.

    list = [ '사과', '', '참외', '딸기' ]

    with open( 'c:/py_test/file_test4.txt' , mode='at' ) as f :

        f.writelines( list )

     

    결과 파일을 보면 개행 문자가 없어서 아래와 같이 다 붙어있습니다.

    사과배참외딸기

     

    위의 예제에서 각 리스트 요소를 라인으로 작성하고 싶다면 요소마다 개행 문자를 넣어 주거나

    리스트를 다시 for 구문으로 한 라인 씩 개행 문자를 입력하여  wite() 해야 합니다.

     

    w 모드는 항상 overwrite 한다는 것에 유념해서 사용합니다.

    예로 로그를 작성하는 프로그램을 작성할 경우 처음 로그 파일은 없어서 새로 생성해서  write 해야 하고 그 다음 부터는

    파일의 끝에 추가해야 합니다.

    이럴 경우는 a  모드를 사용합니다.

     

    이제 까지 파일 쓰기에 대해 알아보았습니다.

    이렇게 파이썬에서 파일 처리에 관한 포스팅 모두 마칩니다.

     

    반응형