파이썬 - Text 파일 만들기

  • 이번 포스트에서는 python에서 텍스트 파일에 대한 기본적인 사용 방법을 알아볼 것이다.

텍스트 파일 다루기 기본

  • 파이썬에서 파일을 다룰 때는 기본 내장함수 open() 함수를 활용한다.
    • open(file, mode=’r’, buffering=-1, encoding=None, errors=None, newline=None, closfd=True, opener=None)
    • file : 파일 경로
    • mode : 파일이 열리는 모드
      • ‘r’: 읽기 용으로 열림(기본값)
      • ‘w’: 쓰기 위해 열기, 파일을 먼저 자른다.
      • ‘x’: 베타적 생성을 위해 열리고, 이미 존재하는 경우 실패
      • ‘a’: 쓰기를 위해 열려 있고, 파일의 끝에 추가하는 경우 추가한다.
      • ‘b’: 2진 모드(바이너리 모드)
      • ‘t’: 텍스트 모드(기본값)
      • ‘+’: 업데이트(읽기 및 쓰기)를 위한 디스크 파일 열기
      • ‘U’: 유니버설 개행 모드(사용되지 않음)
    • buffering: 버퍼링끄기는 0(바이너리모드에서만 동작), 라인모드는 1(텍스트모드에서만 가능), 고정 크기로 보내려면 임의의 바이트수를 1보다 큰 양의 수로 입력
    • encoding: 파일을 디코딩하거나 인코딩하기 위해 사용되는 이름. 대부분 utf-8이지만 모든 시스템이 utf-8이라는 보장이 없으므로 명시적으로 하는 것이 좋다.
    • 파일 객체는 반드시 열고 작업이 완료되면 반드시 파일을 닫아야 한다.
    • 파일을 닫지 않으면 버퍼링되어 있는 데이터는 기록되지 않고 소실될 수 있습니다.
    • 파일 객체의 close() 메소드로 파일을 닫는다.

파일 쓰기

  • 파일을 작성하기 위해서는 새로운 파일을 open해야 한다.
    • open함수는 파이썬의 내장함수이며, ‘파일 이름’과 ‘파일 열기 모드’를 인자 값으로 받은 후 실행된다.
    • open(‘파일 이름’, ‘파일 열기 모드’, optional)
    • 파일을 쓰기모드로 열 시 해당 파일이 이미 존재할 경우 기존에 작성된 내용이 모두 사라지고 새로 작성된다.
  • mode를 작성할 때 r(읽기), w(쓰기), a(추가하기) 세가지 중 하나와 t(텍스트), b(바이너리) 둘중 하나와 반드시 결합해야 하며, 나머지는 optional하게 사용 가능하다.
  • help 메소드로 file 객체의 여러 사용할 수 있는 메소드를 볼 수 있다.

    1
    2
    3
    f = open('test.txt', mode='wt', encoding='utf-8')

    help(f)
  • 생성된 파일에 data를 작성하려면 아래와 같이 코드를 작성한다.

    1
    2
    3
    4
    5
    6
    7
    f = open('text.txt', mode='wt', encoding='utf-8')
    f.write('파이썬으로 텍스트 파일을 작성하는 방법에 대해 알아보았습니다.')
    f.write('다음 포스트에는 excel 파일에 대해 다뤄볼 것입니다.\n')
    f.write('이해가 잘 되었나요?')
    # write의 반환은 바이트수가 아닌 문자열 수이다.
    f.close()
    # 작성이 끝나면 반드시 close() 메소드를 호출해야 한다.

파일 읽기

  • 파일 읽을 때 mode는 ‘rt’이다.
  • read(글자수)로 파일을 읽는다.
  • 파일을 읽고나서 내부 포인터는 마지막으로 읽은 텍스트 위치로 이동된다.
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    >>> r = open('test.txt', mode='rt', encoding='utf-8')
    >>> r.read(17)
    '파이썬으로 텍스트 파일을 작성하'
    >>> r.read(17)
    '는 방법에 대해 알아보았습니다.'

    # 다 읽은 후에는 빈 문자 반환
    >>> r.read(10)
    ''

    # 다시 포인터를 맨 앞으로 가져가려면 seek(포인터위치) 메소드 사용
    >>> r.seek(0)
    0

    # 파일 내용 전체를 리턴받으려면 read 메소드를 인수 없이 사용
    >>> r.read()
    '파이썬으로 텍스트 파일을 작성하는 방법에 대해 알아보았습니다.다음 포스트에는 excel파일에 대해 다뤄볼 것입니다.\n이해가 잘 되었나요?'

    >>> r.seek(0)
    0

    # readline()메소드로 line 별로 읽어온다.
    >>> r.readline()
    '파이썬으로 텍스트 파일을 작성하는 방법에 대해 알아보았습니다.다음 포스트에는 excel파일에 대해 다뤄볼 것입니다.\n'
    >>> r.readline()
    '이해가 잘 되었나요?'
    >>> r.readline()
    ''

    # readlines()메소드는 파일의 라인별로 리스트 형태로 리턴한다.
    >>> r.seek(0)
    0
    >>> r.readlines()
    ['파이썬으로 텍스트 파일을 작성하는 방법에 대해 알아보았습니다.다음 포스트에는 excel파일에 대해 다뤄볼 것입니다.\n', '이해가 잘되었나요?']
    >>> r.close()

파일 추가

  • mode는 mode=’at’이다.

    1
    2
    a = open('test.txt', mode='at', encoding='utf-8')
    a.writelines(['이번엔 파일을 추가해보았습니다.', 'writelines를 이용하여 추가하였습니다.'])
  • 결과

    1
    2
    파이썬으로 텍스트 파일을 작성하는 방법에 대해 알아보았습니다.다음 포스트에는 excel파일에 대해 다뤄볼 것입니다.
    이해가 잘되었나요?이번엔 파일을 추가해보았습니다.writelines를 이용하여 추가하였습니다.