달나라 노트

Python Basic : open (file 읽기) 본문

Python/Python Basic

Python Basic : open (file 읽기)

CosmosProject 2021. 2. 8. 12:27
728x90
반응형

 

 

Python에서 File 생성 또는 쓰기

Python에서 파일을 생성하거나 읽거나 파일에 값을 입력할 때에는 open 함수로 파일을연 후 마지막에 close 함수를 이용하여 파일을 닫아주어야 합니다.

 

open(파일 경로, 모드)

open 함수의 syntax는 위와 같습니다.
내가 다룰 파일의 경로를 적어줍니다. 이때 내가 다룰 파일의 이름까지 모두 적어줘야합니다.
모드는 내가 해당 파일을 열 때 읽기모드, 쓰기모드, 추가모드 중 어떤 모드를 사용할지를 명시합니다.
모드는 다음과 같은 세 가지가 있습니다.

r = 읽기 모드 - 파일을 읽기만 할 때
w = 쓰기 모드 - 파일에 내용을 쓸 때(기존 내용은 지워지고 새로 내용이 들어감.)
a = 추가 모드 - 파일의 마지막에 새로운 내용을 추가할 때



 

f = open("C:/test.txt", 'w')

f.write("hello world!")
f.close()

위와 같은 코드를 실행하면 C드라이브에 test.txt라는 파일을 생성한 후 해당 파일을 쓰기 모드(w)로 열어서 hello world!라는 글자를 입력한 후 파일을 저장하고 닫게 됩니다.
만약 C드라이브에 test.txt라는 파일이 없다면 자동으로 파일이 생성되며 명시한 디렉토리에 test.txt라는 파일이 있다면 해당 파일의 내용이 업데이트됩니다.



f = open("C:/test.txt", 'w')

f.write("hello world!\n")
f.write("I'm Robin.")
f.close()

이렇게 close 함수가 나오기 전에 write를 여러 번 사용해서 내용을 여러 번 입력하는 것도 가능합니다.



test_dir = 'C:/test2.txt'

f = open(test_dir, 'w')
for i in range(1, 11):
 c = '{}번째 줄입니다.\n'
 data = c.format(i)
 f.write(data)

f.close()

- Result
1번째 줄입니다.
2번째 줄입니다.
3번째 줄입니다.
4번째 줄입니다.
5번째 줄입니다.
6번째 줄입니다.
7번째 줄입니다.
8번째 줄입니다.
9번째 줄입니다.
10번째 줄입니다.

 

위처럼 반복문을 이용하여 파일에 값을 입력할 수도 있습니다.

 

 

 

 

 

 

 


 

 

 

 

 

Python에서 File 읽기

이제 위에서 생성한 파일(test2.txt)을 읽어와보겠습니다.

f = open("C:/test2.txt", 'r')

contents = f.read()
print(contents)
f.close()

- Result
1번째 줄입니다.
2번째 줄입니다.
3번째 줄입니다.
4번째 줄입니다.
5번째 줄입니다.
6번째 줄입니다.
7번째 줄입니다.
8번째 줄입니다.
9번째 줄입니다.
10번째 줄입니다.

 

위처럼 read 함수를 이용하여 file 전체 내용을 문자열로 받을 수 있습니다.



f = open("C:/test2.txt", 'r')

line1 = f.readline()
line2 = f.readline()
print(line1)
print(line2)
f.close()

- Result
1번째 줄입니다.
2번째 줄입니다.

readline 함수는 파일 안의 내용을 한 줄씩 읽어옵니다.
위처럼 여러 번의 readline 함수를 사용해서 첫 번째줄, 두 번째줄 등등을 읽어올 수 있습니다.



f = open("C:/test2.txt", 'r')

while True:
 line = f.readline()
 if not line:
  break
 print(line)

f.close()

Result
1번째 줄입니다.
2번째 줄입니다.
3번째 줄입니다.
4번째 줄입니다.
5번째 줄입니다.
6번째 줄입니다.
7번째 줄입니다.
8번째 줄입니다.
9번째 줄입니다.
10번째 줄입니다.

 

위처럼 반복문과 readline 함수를 사용하여 파일 전체의 내용을 읽어올 수 있습니다.
while True 부분에서 while 뒤의 조건이 True이므로 이 반복문은 무한히 실행되는 무한 loop일 것입니다.
무한히반복문이실행되는 와중에 line = f.readline()에서 순차적으로 line을 읽은 후  print(line) 부분에서 해당 line을 출력합니다.

readline 함수는 더 이상 읽을 값이 없다면 None을 출력하며 이것은 False와 동일한 뜻입니다.
line = f.readline()에서 한 줄씩 파일을 읽다가 파일의 모든 내용을 읽었고, 더 이상 읽을 내용이 없을 때 None을 반환할 것입니다.
이 None이란 값은 if not line 부분에서 not에 의해 뒤집혀 True값으로 변환되고 if 조건문이 실행됩니다.
if 조건문의 내용에는 반복문을 멈추라는 break 키워드가 있어서 결국 파일을 다 읽으면 반복문은 종료됩니다.

 

 

 

 

 


 

 

 

 

with 구문

위에서 본 예시들은 open으로 시작하여 close로 끝나는 형태였습니다.
하지만 with 구문을 사용하면 close 함수 없이 이를 더 편리하게 표현할 수 있습니다.

with open("C:/test.txt", 'w') as f:
    f.write("hello world!")


위 코드에는 close 함수가 없다. with 구문은 close를 자동으로 진행합니다.
위 코드를 실행하고나면 test.txt 파일에 hello world!라는 글자가 써진것을 볼 수 있습니다.



with open("C:/test.txt", 'r') as f:
    print(f.read())

- Result
hello world!

with 구문을 통해 읽기 모드도 실행할 수 있습니다.

 

 

 

 

 

728x90
반응형
Comments