EOL for sys.stdin.readline() and raw_input()

jkv jkv at unixcluster.dk
Thu Feb 26 20:06:06 CET 2009


Terry Reedy wrote:
> jkv wrote:
>> Hi,
>>
>> Are there any way to change the EOL character for 
>> sys.stdin.readline() and raw_input()?
>> My problem is that i cannot rely on that the clients connection to my 
>> application will end all lines with \n or \r\n. Sometimes they will 
>> use \r\000 as EOL.
>>
>> Example from my code:
>>
>>    sys.stdout.write('Password: ');
>>    #IAC DO ECHO     sys.stdout.write('\xFF\xFB\x01')
>>    password = raw_input()
>>
>> If the client sends 'qwerty\r\n' everything is fine and the password 
>> get stored in the variable. But sometimes, depending on how broken 
>> the telnet client are, the client will send 'qwerty\r\000' instead 
>> and then my application will hang at 'password = raw_input()' forever.
>
> Can you put that in a separate thread with timeout?
I guess i could - wouldn't know how thou, just getting started in python.

Is there any way i can read stdin character by character? In C i would 
loop over 'ch = getch();' and in each iteration push the character to 
the password variable unless  ch equals to \r.
Anyway to do something like this in python?

Regards,
jkv




More information about the Python-list mailing list