Hello again,
I wanted to give your solution a try, but got stuck.
The file that I want to replace the "standard input" with is a pseudo file
object with a custom read method. I have a hard time finding out how
to have a file descriptor (or fileno) associated with it.
I tried inheriting from the "file" class (using a dummy file on disk), and
then
overriding the read() and __init__() method. To test I used
os.read(my_file_no,1),
but it reads the contents of my dummy file rather than using my read method.
So obviously it does some low level stuff there...

Again I have the feeling this is impossible, but I thought that the last
time too :)

Almar

2008/9/30 Almar Klein <[EMAIL PROTECTED]>

> Wow,
> it's that easy...
> thanks!
>
> 2008/9/29 Gabriel Genellina <[EMAIL PROTECTED]>
>
> En Fri, 26 Sep 2008 04:29:42 -0300, Almar Klein <[EMAIL PROTECTED]>
>> escribió:
>>
>>  I would still like to hear if anyone knows how I can change the input
>>> stream
>>> that
>>> is used when running "python -i", but I would not be surprised if it is
>>> impossible...
>>>
>>
>> Sure you can. You have to replace the file descriptor 0, that is,
>> "standard input"; sys.stdin reads from there. The standard way is to use
>> os.dup2:
>>
>> c:\temp>type foo.txt
>> This line read from foo.txt
>>
>>
>> c:\temp>type redirect.py
>> import os
>>
>> inp = open("foo.txt","r")
>> os.dup2(inp.fileno(), 0)
>> print "raw_input->", raw_input()
>>
>> c:\temp>python redirect.py
>> raw_input-> This line read from foo.txt
>>
>> This is not
>>
>>
>> --
>> Gabriel Genellina
>>
>> --
>> http://mail.python.org/mailman/listinfo/python-list
>>
>
>
--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to