여러 입력을 한 번에 받을 때 open(0).read() 같은 형식으로 써왔습니다.
근데 원리가 궁금해서 print(open(0)) 해봤는데 아래와 같이 나왔습니다.
<_io.TextIOWrapper name=0 mode='r' encoding='utf-8'>
그런데 '0' 도 아니고 0으로 나왔고, 1이나 2같은 다른 정수는 오류가 나오더군요.
name에 문자열이 아닌 정수형은 0만 들어갈수 있는데 이게 무슨 의미인지 알려주시면 감사하겠습니다.
그리고 로컬에서 open(0).read()를 실행하면 input() 와 비슷하게 터미널에서 값을 받는 형태로 나타납니다.
이게 어떻게 된건지도 알려주시면 감사하겠습니다.
0은 stdin, 1은 stdout, 2는 stderr에 각각 해당해서 그렇습니다.
File descriptor를 공부해보시면 이해하는 데 도움이 될 겁니다.
https://stackoverflow.com/ques...
감사합니다!
명쾌하네요!
댓글을 작성하려면 로그인해야 합니다.
dlwlsdn3642 2년 전
여러 입력을 한 번에 받을 때 open(0).read() 같은 형식으로 써왔습니다.
근데 원리가 궁금해서 print(open(0)) 해봤는데 아래와 같이 나왔습니다.
<_io.TextIOWrapper name=0 mode='r' encoding='utf-8'>
그런데 '0' 도 아니고 0으로 나왔고, 1이나 2같은 다른 정수는 오류가 나오더군요.
name에 문자열이 아닌 정수형은 0만 들어갈수 있는데 이게 무슨 의미인지 알려주시면 감사하겠습니다.
그리고 로컬에서 open(0).read()를 실행하면 input() 와 비슷하게 터미널에서 값을 받는 형태로 나타납니다.
이게 어떻게 된건지도 알려주시면 감사하겠습니다.