python 키 입력 받는 함수; input, raw_input, getpass
Python 2008. 7. 13. 00:36python builtin에는 두가지 키입력 처리 함수가 있다. input()과 raw_input()
둘다 공통적으로 한개의 문자열 인자를 사용할 수 있고, 이 인자가 키입력 프롬프트로 사용된다.
두 함수는 미묘한 차이점이 있으므로 용도에 따라 주의깊게 선택하여 사용해야 한다.
차이점은, raw_input()은 엔터키를 입력할때까지 입력된 "문자열"을 리턴하며, input()은 raw_input()이 받은 결과를 eval()한 결과와 같이 리턴한다는 점이다. 즉, input() == eval(raw_input())이 된다.
두 함수 모두 인자를 주지 않으면 아무 프롬프트(prompt)없이 입력을 무한정 기다린다.
그리고 아무 입력 없이 엔터키를 누르면 input()함수는 evaluation할 내용이 없는 것이 되므로 SyntaxError를 일으키지만 raw_input()은 그냥 엔터키를 누르면 빈 문자열을 리턴한다.
키보드로부터 입력받는 내용은 화면에 보이지 말아야 할 때가 있다.(echo off) 위의 두 함수는 이런 경우에 사용하기 까다롭다. 이럴땐 getpass module을 import해서 사용한다. getpass.getpass() 함수는 default prompt로 'Password: ' 가 설정되어 있다.
getpass는 Windows에서는 잘 작동하지 않을 수도 있다.
둘다 공통적으로 한개의 문자열 인자를 사용할 수 있고, 이 인자가 키입력 프롬프트로 사용된다.
두 함수는 미묘한 차이점이 있으므로 용도에 따라 주의깊게 선택하여 사용해야 한다.
차이점은, raw_input()은 엔터키를 입력할때까지 입력된 "문자열"을 리턴하며, input()은 raw_input()이 받은 결과를 eval()한 결과와 같이 리턴한다는 점이다. 즉, input() == eval(raw_input())이 된다.
>>> ibuff=input('input?')
input?123
>>> ibuff
123
>>> ibuff=input('input?')
input?asdf
Traceback (most recent call last):
File "<pyshell#7>", line 1, in <module>
ibuff=input('input?')
File "<string>", line 1, in <module>
NameError: name 'asdf' is not defined
>>> ibuff=input('input?')
input?'asdf'
>>> ibuff
'asdf'
>>> rbuff=raw_input('raw_input?')
raw_input?1234
>>> rbuff
'1234'
>>> rbuff=raw_input('raw_input?')
raw_input?qwer
>>>
>>> rbuff
'qwer'
input?123
>>> ibuff
123
>>> ibuff=input('input?')
input?asdf
Traceback (most recent call last):
File "<pyshell#7>", line 1, in <module>
ibuff=input('input?')
File "<string>", line 1, in <module>
NameError: name 'asdf' is not defined
>>> ibuff=input('input?')
input?'asdf'
>>> ibuff
'asdf'
>>> rbuff=raw_input('raw_input?')
raw_input?1234
>>> rbuff
'1234'
>>> rbuff=raw_input('raw_input?')
raw_input?qwer
>>>
>>> rbuff
'qwer'
두 함수 모두 인자를 주지 않으면 아무 프롬프트(prompt)없이 입력을 무한정 기다린다.
그리고 아무 입력 없이 엔터키를 누르면 input()함수는 evaluation할 내용이 없는 것이 되므로 SyntaxError를 일으키지만 raw_input()은 그냥 엔터키를 누르면 빈 문자열을 리턴한다.
키보드로부터 입력받는 내용은 화면에 보이지 말아야 할 때가 있다.(echo off) 위의 두 함수는 이런 경우에 사용하기 까다롭다. 이럴땐 getpass module을 import해서 사용한다. getpass.getpass() 함수는 default prompt로 'Password: ' 가 설정되어 있다.
>>> import getpass
>>> pswd=getpass.getpass()
Password: (여기서 qwerasdf를 입력하지만 화면에는 보이지 않는다.)
>>> pswd
'qwerasdf'
>>> pswd=getpass.getpass()
Password: (여기서 qwerasdf를 입력하지만 화면에는 보이지 않는다.)
>>> pswd
'qwerasdf'
getpass는 Windows에서는 잘 작동하지 않을 수도 있다.
'Python' 카테고리의 다른 글
Python String/Unicode translate() 함수 (0) | 2008.09.29 |
---|---|
python 디버그: line 번호 찍기 (0) | 2008.08.01 |
python object의 멤버 attribute를 런타임에 생성하기 (0) | 2008.03.20 |
Google pagerank를 알아내는 python코드 (1) | 2008.01.26 |
Python Built-in 가지고 놀기 (0) | 2007.08.30 |