관리 메뉴

NineTwo meet you

[파이썬기초] 파일 입출력 본문

프로그래밍언어/파이썬

[파이썬기초] 파일 입출력

NineTwo 2020. 9. 23. 17:04
반응형

파일 생성하기

파일 열기 모드

r 읽기 모드로 파일을 읽기만 할 때 사용한다.
w 쓰기 모드로 파일 내용을 쓸때 사용한다. 쓰기모드로 여는 경우 원래 있던 내용이 모두 사라진다.
a 추가 모드로 파일의 마지막에 새로운 내용을 추가할 때 사용한다.
>>>f = open("새파일이름.txt",'w')
>>>f.close()

파일 내용 쓰기

f.write() 이용

C:\Users\USER\Documents\라는 경로에 newfile이라는 이름의 구구단이 입력된 파일 생성하기

원하는 파일의 위치를 입력하면 된다.

>>> f = open("C:\\Users\\USER\\Documents\\newfile.txt",'w')
for i in range(1,10):
    for j in range(1,10):
        data = "%d*%d=%d\n"%(i,j,i*j)
        f.write(data)

>>>f.close()

해당 위치에 파일 생성
생성된 파일 내용 확인


파일 내용 읽기

앞서 생성한 파일을 'r'로 읽기 모드로 파일을 읽어 들일 수 있다.

readline() 함수 이용

파일의 가장 첫 번째 라인을 읽어 들인다.

만약 파일의 전체 내용을 읽고 싶다면 while을 같이 사용하면 된다.

>>> f = open("C:\\Users\\USER\\Documents\\newfile.txt",'r')
>>> data = f.readline()
>>> data
'1*1=1\n'
>>> type(data)
<class 'str'>
>>>f.close()

while()같이 사용해 전체 파일 읽기

>>> f = open("C:\\Users\\USER\\Documents\\newfile.txt",'r')
while 1:
    data = f.readline()
    if not data:
        break
    print(data)

1*1=1
1*2=2
1*3=3
1*4=4
1*5=5
1*6=6
1*7=7
1*8=8
...
9*7=63
9*8=72
9*9=81

>>>f.close()

readlines() 함수 이용

파일의 전체 내용을 읽어 들여 리스트로 리턴한다.

>>> f = open("C:\\Users\\USER\\Documents\\newfile.txt",'r')
>>> data1 = f.readlines()
>>> type(data1)
<class 'list'>
>>>data1
['1*1=1\n', '1*2=2\n', '1*3=3\n', '1*4=4\n', '1*5=5\n', '1*6=6\n', '1*7=7\n', '1*8=8\n', '1*9=9\n', '2*1=2\n', '2*2=4\n', '2*3=6\n', '2*4=8\n', '2*5=10\n', '2*6=12\n', '2*7=14\n', '2*8=16\n', '2*9=18\n', '3*1=3\n', '3*2=6\n', '3*3=9\n', '3*4=12\n', '3*5=15\n', '3*6=18\n', '3*7=21\n', '3*8=24\n', '3*9=27\n', '4*1=4\n', '4*2=8\n', '4*3=12\n', '4*4=16\n', '4*5=20\n', '4*6=24\n', '4*7=28\n', '4*8=32\n', '4*9=36\n', '5*1=5\n', '5*2=10\n', '5*3=15\n', '5*4=20\n', '5*5=25\n', '5*6=30\n', '5*7=35\n', '5*8=40\n', '5*9=45\n', '6*1=6\n', '6*2=12\n', '6*3=18\n', '6*4=24\n', '6*5=30\n', '6*6=36\n', '6*7=42\n', '6*8=48\n', '6*9=54\n', '7*1=7\n', '7*2=14\n', '7*3=21\n', '7*4=28\n', '7*5=35\n', '7*6=42\n', '7*7=49\n', '7*8=56\n', '7*9=63\n', '8*1=8\n', '8*2=16\n', '8*3=24\n', '8*4=32\n', '8*5=40\n', '8*6=48\n', '8*7=56\n', '8*8=64\n', '8*9=72\n', '9*1=9\n', '9*2=18\n', '9*3=27\n', '9*4=36\n', '9*5=45\n', '9*6=54\n', '9*7=63\n', '9*8=72\n','9*9=81\n']
>>>f.close()

read() 함수 이용

readlines()와 비슷하게 파일의 전체 내용을 읽어 들이지만 이를 문자열로 리턴한다는 차이점을 가진다.

>>> f = open("C:\\Users\\USER\\Documents\\newfile.txt",'r')
>>> data2 = f.read()
>>> type(data2)
<class 'str'>
>>>data2
'1*1=1\n1*2=2\n1*3=3\n1*4=4\n1*5=5\n1*6=6\n1*7=7\n1*8=8\n1*9=9\n2*1=2\n2*2=4\n2*3=6\n2*4=8\n2*5=10\n2*6=12\n2*7=14\n2*8=16\n2*9=18\n3*1=3\n3*2=6\n3*3=9\n3*4=12\n3*5=15\n3*6=18\n3*7=21\n3*8=24\n3*9=27\n4*1=4\n4*2=8\n4*3=12\n4*4=16\n4*5=20\n4*6=24\n4*7=28\n4*8=32\n4*9=36\n5*1=5\n5*2=10\n5*3=15\n5*4=20\n5*5=25\n5*6=30\n5*7=35\n5*8=40\n5*9=45\n6*1=6\n6*2=12\n6*3=18\n6*4=24\n6*5=30\n6*6=36\n6*7=42\n6*8=48\n6*9=54\n7*1=7\n7*2=14\n7*3=21\n7*4=28\n7*5=35\n7*6=42\n7*7=49\n7*8=56\n7*9=63\n8*1=8\n8*2=16\n8*3=24\n8*4=32\n8*5=40\n8*6=48\n8*7=56\n8*8=64\n8*9=72\n9*1=9\n9*2=18\n9*3=27\n9*4=36\n9*5=45\n9*6=54\n9*7=63\n9*8=72\n9*9=81\n'
>>>f.close()

파일 내용 추가

'w'를  사용하면 기존에 파일이 있던 경우 파일의 내용이 모두 사라지고 새로운 내용이 덮어서 써진다.

기존의 파일 끝에 새로운 내용을 추가하려 한다면  'a'를 사용해야 한다.

>>> f = open("C:\\Users\\USER\\Documents\\newfile.txt",'a')
>>> f.write("파일 끝에 새로운 내용을 추가합니다.")
>>> f.write("'a'를 사용해서 파일을 열면 가능합니다.")
>>>f.close()

기존 파일 끝에 새로운 내용 추가 확인


with문 사용

위의 예제를 살펴보면 모두 파일을 open()으로 열고 close()로 닫아주는 것을 확인할 수 있다.

close()를 생략하면 프로그램 종료 시 자동으로 열린 파일을 닫아준다.

만약 그전에 쓰기 모드로 연 파일을 다시 사용하려면 오류가 발생한다.

그래서 사용하는 것이 with문이다.

with를 사용하면 파일을 사용하고 자동을 닫아준다.

앞서 사용했던 예제를 with문으로 바꾼 결과를 

>>> f = open("C:\\Users\\USER\\Documents\\newfile.txt",'w')
for i in range(1,10):
    for j in range(1,10):
        data = "%d*%d=%d\n"%(i,j,i*j)
        f.write(data)
>>>f.close()
with open("C:\\Users\\USER\\Documents\\newfile1.txt",'w') as f:
    for i in range(1,10):
        for j in range(1,10):
            data = "%d*%d=%d\n"%(i,j,i*j)
            f.write(data)

with로 생성한 새 파일 확인
with로  생성한 새파일 내용 확인

반응형
Comments