파이썬의 open함수 관련해 질문드립니다.
조회수 527회
1.open함수와 io모듈의 open메서드는 똑같은 것인가요?
아니면 비슷한 기능이지만 서로 별개의 함수인가요?
2.open함수로 파일을 연 후, read()로 파일 내용을 읽을 때,
f = open('a.txt', 'r')
s = f.read()
위 코드에서 read()가 실행될 때,
실제로 하드디스크에 저장되어 있는 a.txt파일에 접근해 읽는 작업을 하게 되는 것인지,
아니면, open()가 실행될 때 하드디스크에 저장되어 있는 a.txt 파일 내용은
f객체 안에 담겨져 메모리 상의 어느 위치에 저장되는 것이고,
이후 read()를 실행하게 되면,
f객체에 접근해 (하드디스크가 아닌)메모리에 저장되어 있는
파일 내용을 읽어오게 되는 것인지 궁금합니다.
-
(•́ ✖ •̀)
알 수 없는 사용자
1 답변
-
io stream 에 대해서 학습이 필요할 듯 합니다.
python 은 어렵습니다. 너무 추상화되어 있어서 다루기 편한것이지 쉬운것(!)이 아닙니다.
open 했다고 해서 파일내용이 메모리에 저장되는 것이 아닙니다. 말 그대로 파일을 open 하는 겁니다. 즉 쉽게 파일에 대한 포인터 같은 역활을 합니다.
실제 메모리에 저장하는 것은 read 류 메소드를 호출할때 입니다.
먼저 c 로 파일 IO를 학습해보시길 권합니다.
fopen, fgets, seek 같은 함수를 사용해보면 파일에서 읽어드릴때 모습을 더 구체적으로 알 수 있고 파이썬이 얼마나 추상화를 하는지도 알 수 있습니다.
- 설명 감사합니다.^^ 혹시 관련 책 추천해주실 만한 것이 있으신지요? 알 수 없는 사용자 2019.5.18 16:36
- 기본 c 튜터리얼이라면 file io는 필수적으로 설명되어 있습니다. 사실 더 원천적인 것을 알고 싶다면 fopen 같은 c함수의 소스를 분석해보면 됩니다. 어차피 파이썬에서도 운영체제의 api를 호출합니다. 정영훈 2019.5.18 16:45
- fopen소스는 어디서 볼 수 있는지요? 알 수 없는 사용자 2019.5.18 19:15
- https://en.wikipedia.org/wiki/C_file_input/output 참고하시고 https://code.woboq.org/userspace/glibc/libio/iofopen.c.html 를 보시면 됩니다. 정영훈 2019.5.18 20:34
- 감사합니다. 알 수 없는 사용자 2019.5.19 06:38
댓글 입력