Python 파일 입출력
기본 함수인 open() 을 이용하여 파일 입출력이 가능하다.
help(open)
open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)
Open file and return a stream. Raise IOError upon failure.
file
유일하게 필수 입력사항이며 파일 경로를 지정해준다.mode
읽기/쓰기에 대한 상세 모드를 설정한다. 기본값은 ‘rt’ 이며 텍스트파일을 읽는 모드이다.
어떠한 작업을 수행하는지에 따라 ‘r’,’w’,’a’ 문자와 파일 형태가 어떤지에 따라 ‘t’,’b’ 문자를 조합하여 입력한다.encoding
대상 파일의 인코딩을 지정한다. 기본값은 ‘utf-8’
텍스트 파일 쓰기
write
메소드를 사용해서 텍스트를 파일에 기록할 수 있다. newline 은 명시를 해주어야 한다.
file = open('say_i_love_you-tyrone_wells.txt',mode='wt',encoding='utf-8')
file.write('Old man on a red park bench\n')
file.write('Sitting here next to me\n')
file.write('Started talking bout the love he lost\n')
file.write('He said boy don\'t end up like me\n')
file.write('I\'m sitting here by myself\n')
file.write('Because of what I never said\n')
file.write('Pay attention son listen close\n')
file.write('You gotta get this though your head\n')
file.write('\n')
file.write('Oooh, don\'t let her slip away\n')
file.write('Oooh, say I love you every day\n')
file.write('\n')
file.write('I finally found her and it feels so good\n')
file.write('I gotta lotta love in this heart\n')
file.write('She\'s a beauty and she\'s teaching me\n')
file.write('To stop and look up at the stars\n')
file.write('I gotta show her what she means to me\n')
file.write('So she\'ll know\n')
file.write('That I love her more than anything\n')
file.write('And I\'m never gonna let her go\n')
file.write('\n')
file.write('Oooo, I won\'t let her slip away\n')
file.write('Oooo, I\'ll say I love you every day\n')
file.close()
텍스트 파일 읽기
REPL(READ EVAL PRINT LOOP) 환경에서는 텍스트 파일을 어떻게 읽어들이는지 바로바로 확인할 수 있다.
read(length)
메소드를 사용하면 현재 인덱스부터 length
값만큼의 문자열을 반환해준다. 인덱스는 해당 값만큼 뒤로 이동된다.
read()
메소드를 인자 없이 사용하면 현재 위치에서부터 텍스트 파일의 마지막까지 모든 문자열을 반환해준다.
seek(index)
메소드를 사용하면 read 등으로 인해 변경된 현재 index 위치를 초기화 하거나 원하는 위치로 옮길 수 있다.
readlines()
메소드를 사용하면 newline으로 구분지어 각 행을 원소로 하는 리스트를 반환한다.
file = open('say_i_love_you-tyrone_wells.txt',mode='rt',encoding='utf-8')
>>> file = open('say_i_love_you-tyrone_wells.txt',mode='rt',encoding='utf-8')
>>>
>>> file.read(10)
'Old man on'
>>> file.read(10)
' a red par'
>>> file.read(10)
'k bench\nSi'
>>> file.read(10)
'tting here'
>>> file.read(10)
' next to m'
>>> file.seek(0)
0
>>> file.read(10)
'Old man on'
>>> file.read(10)
' a red par'
>>> file.read(10)
'k bench\nSi'
>>> file.read()
"tting here next to me\nStarted talking bout the love he lost\nHe said boy don't end up like me\nI'm sitting here by myself\nBecause of what I never said\nPay attention son listen close\nYou gotta get this though your head\n\nOooh, don't let her slip away\nOooh, say I love you every day\n\nI finally found her and it feels so good\nI gotta lotta love in this heart\nShe's a beauty and she's teaching me\nTo stop and look up at the stars\nI gotta show her what she means to me\nSo she'll know\nThat I love her more than anything\nAnd I'm never gonna let her go\n\nOooo, I won't let her slip away\nOooo, I'll say I love you every day\n"
>>> file.seek(0)
0
>>> file.readline()
'Old man on a red park bench\n'
>>> file.readline()
'Sitting here next to me\n'
>>> file.readline()
'Started talking bout the love he lost\n'
>>> file.readline()
"He said boy don't end up like me\n"
>>> file.seek(0)
0
>>> file.readlines()
['Old man on a red park bench\n', 'Sitting here next to me\n', 'Started talking bout the love he lost\n', "He said boy don't end up like me\n", "I'm sitting here by myself\n", 'Because of what I never said\n', 'Pay attention son listen close\n', 'You gotta get this though your head\n', '\n', "Oooh, don't let her slip away\n", 'Oooh, say I love you every day\n', '\n', 'I finally found her and it feels so good\n', 'I gotta lotta love in this heart\n', "She's a beauty and she's teaching me\n", 'To stop and look up at the stars\n', 'I gotta show her what she means to me\n', "So she'll know\n", 'That I love her more than anything\n', "And I'm never gonna let her go\n", '\n', "Oooo, I won't let her slip away\n", "Oooo, I'll say I love you every day\n"]
>>> file.close()
텍스트 파일에 추가하기
writelines(list_of_string)
메소드를 이용해 문자열 리스트의 원소들을 해당 파일의 마지막에 추가할 수 있다.
file = open('say_i_love_you-tyrone_wells.txt',mode='at',encoding='utf-8')
file.writelines(['\n\n','say I Love You\n','song by Tyrone Wells'])
file.close()