겉바속촉

[PYTHON] 파이썬_파일 읽기 본문

IT 일기 (상반기)/PYTHON

[PYTHON] 파이썬_파일 읽기

겉바속촉 2021. 1. 5. 16:33
728x90
반응형

 

안녕하세요

겉바속촉입니다

!^^!

 

 

!!파이썬 시작하기!!

 

 

 

 

이번에는 파일 읽기에 대해서

알아보도록 하겠습니다

 

 

 

 

 


 

 

 

시작 전에 참고할 코드 (요 파일이 계속 등장할 예정)

 

echo.py 

if __name__ == "__main__" :
    print("I am the main program.")

else:
    print("Another module is importing me.")


 

 

 


 

 

파일 읽기

 

 

파일 열기

 

  • file = open('파일명', 'r')  ---> 읽기 모드로 파일 오픈
  • content = file.read()  ---> 파일 내용 전체를 하나의 문자열로 읽음
  • file.close()  ---> 파일 객체와 관련된 모든 자원을 해제
  • 파일은 사용이 끝나고 나면 꼭 close 해줄 것!!!

 

다음 코드 입력 ( echo.py라는 파일 존재)

file = open('echo.py', 'r')

content = file.read()

print(content)

file.close()

 

 

 

결과

 

 

 

 

with open

 

  • 오류가 발생하는 코드가 들어있다면 close가 호출되지 않음
  • 파일이 닫히지 않는 경우가 발생하여 문제가 생김
  • 이것을 막기 위해서 with open 구문을 활용
  • 실행 중 오류가 있어도 파이썬이 자동으로 닫아주는 것

 

 

with open을 사용하면  ---> file.close() 입력 할 필요가 없음!!!

 

코드

with open('echo.py', 'r') as file:
    content = file.read()
    print(content)

 

그래도 처음 예시처럼 동일하게 출력됩니다

 

 

 

 

 

파일을 읽는 방법

 

  • read : 파일 내용을 하나의 문자열로 읽고 싶은 경우 사용
  • read : 문자 몇 개를 읽을 지 정확히 명시하고 싶을 때 사용
  • 파일의 내용을 두 번 읽으려면 파일을 닫고 다시 열어야 함

 

이번에는 shell에다가 해보도록 하겠습니다

 

with open으로 echo.py 파일을 읽기 모드로 열어줍니다

그리고 content에 file.read(10)을 넣어 주는 데 이것은 10글자만 읽겠다는 것

 

 

한 번 더 해볼게요

다시 열어서 각각 first_content와 rest_content 에 다음과 같이 넣었습니다

그리고 출력해보면

 

first_content --> 10글자 출력

rest_content --> 나머지만 출력

 

여기서 이해해야할 것은 file point

file point는 first_content를 실행한 후에 10글자 뒤로 가있습니다

그래서 나머지만 읽어오는 것!!!

 

그러면 file point가 마지막에 가있다면

당연히 더이상 출력되는 것이 없습니다.

 

 

 

그럼 새롭게 읽고 싶다면???

다시 열어주면 되는 것이쥬!!!!

 

 

 


 

shell에서 다음과 같이 명령

 

 

결과를 분석해보면

 

해당 파일을 라인 단위로 읽겠다고 lines = f.readlines() 라고 해줌!!

그러면 리스트로 반환이 됩니다.

리스트 내용을 항목 단위로 출력시키죠.

 

 

라인단위 자체가 개행문자 라는 것을 생각해주셔야 해요.

 

 

 

이번엔 다음과 같이 for l in lines: 라고 준 후에 print를 하면

촤르르르륵 각각의 항목들이 출력이 됩니다

 

 

이번에는 for l in lines: 라고 준 후에

l.strip() 을 출력하면  --->  문자열에 포함된 공백 문자(탭, 개행문자, 스페이스 등)를 제거!!

 

 

 

그럼 원래 소스코드 형태로 출력하고 싶다면요???

다음 형태같이요!!!

 

그렇다면 리스트에 포함된 개행문자는 살리고

print에서 제공해주는 마지막에 있는 개행문자를 버리면 되겠네요:)

 

 

 

 


 

 

파일을 읽는 방법

 

 

for line in 구문을 이용해서 파일의 라인 단위 내용과 단어 수를 출력

출력

 

 

 

동일한 기능을 readlines 함수를 이용해서 구현하면???

출력

 

728x90
반응형