Velocity Reviews

Velocity Reviews (http://www.velocityreviews.com/forums/index.php)
-   Python (http://www.velocityreviews.com/forums/f43-python.html)
-   -   stdin, stdout, redmon (http://www.velocityreviews.com/forums/t586161-stdin-stdout-redmon.html)

Bernard Desnoues 01-21-2008 02:02 PM

stdin, stdout, redmon
 
Hi,

I've got a problem with the use of Redmon (redirection port monitor). I
intend to develop a virtual printer so that I can modify data sent to
the printer.
Redmon send the data flow to the standard input and lauchs the Python
program which send modified data to the standard output (Windows XP and
Python 2.5 context).
I can manipulate the standard output.

"import sys
sys.stdout.write(data)"

it works.
But how to manipulate standard input so that I can store data in a
string or in an object file ? There's no "read" method.

"a = sys.stdin.read()" doesn't work.
"f = open(sys.stdin)" doesn't work.

I don't find anything in the documentation. How to do that ?
Thanks in advance.

Bernard Desnoues
Librarian
Bibliothèque de géographie - Sorbonne

Rolf van de Krol 01-21-2008 02:15 PM

Re: stdin, stdout, redmon
 
According to various tutorials this should work.

<code>
|import sys
data = sys.stdin.readlines()
print "Counted", len(data), "lines."|
</code>

Please use google before asking such questions. This was found with only
one search for the terms 'python read stdin'

Rolf

Bernard Desnoues wrote:
> Hi,
>
> I've got a problem with the use of Redmon (redirection port monitor). I
> intend to develop a virtual printer so that I can modify data sent to
> the printer.
> Redmon send the data flow to the standard input and lauchs the Python
> program which send modified data to the standard output (Windows XP and
> Python 2.5 context).
> I can manipulate the standard output.
>
> "import sys
> sys.stdout.write(data)"
>
> it works.
> But how to manipulate standard input so that I can store data in a
> string or in an object file ? There's no "read" method.
>
> "a = sys.stdin.read()" doesn't work.
> "f = open(sys.stdin)" doesn't work.
>
> I don't find anything in the documentation. How to do that ?
> Thanks in advance.
>
> Bernard Desnoues
> Librarian
> Bibliothèque de géographie - Sorbonne


Bernard Desnoues 01-21-2008 02:24 PM

Re: stdin, stdout, redmon
 
Rolf van de Krol a écrit :
> According to various tutorials this should work.
>
> <code>
> |import sys
> data = sys.stdin.readlines()
> print "Counted", len(data), "lines."|
> </code>
>
> Please use google before asking such questions. This was found with only
> one search for the terms 'python read stdin'
>
> Rolf
>
> Bernard Desnoues wrote:
>> Hi,
>>
>> I've got a problem with the use of Redmon (redirection port monitor).
>> I intend to develop a virtual printer so that I can modify data sent
>> to the printer.
>> Redmon send the data flow to the standard input and lauchs the Python
>> program which send modified data to the standard output (Windows XP
>> and Python 2.5 context).
>> I can manipulate the standard output.
>>
>> "import sys
>> sys.stdout.write(data)"
>>
>> it works.
>> But how to manipulate standard input so that I can store data in a
>> string or in an object file ? There's no "read" method.
>>
>> "a = sys.stdin.read()" doesn't work.
>> "f = open(sys.stdin)" doesn't work.
>>
>> I don't find anything in the documentation. How to do that ?
>> Thanks in advance.
>>
>> Bernard Desnoues
>> Librarian
>> Bibliothèque de géographie - Sorbonne


Hello Rolf,

I know this code because I have search a solution !
Your google code doesn't work ! No attribute "readlines".

>>> import sys
>>> data = sys.stdin.readlines()


Traceback (most recent call last):
File "<pyshell#1>", line 1, in <module>
data = sys.stdin.readlines()
AttributeError: readlines

Rolf van de Krol 01-21-2008 02:52 PM

Re: stdin, stdout, redmon
 
I don't know what you did with your Python installation, but for me this
works perfectly.

test3.py contains:
<code>
import sys

print sys.stdin.readlines()
</code>

test.txt contains:
<code>
Testline1
Testline2
</code>

Output of 'python test3.py < test.txt' is:
<code>
['Testline1\n', 'Testline2']
</code>

Just plain simple and just works.

Rolf



Bernard Desnoues wrote:
> Rolf van de Krol a écrit :
>
>> According to various tutorials this should work.
>>
>> <code>
>> |import sys
>> data = sys.stdin.readlines()
>> print "Counted", len(data), "lines."|
>> </code>
>>
>> Please use google before asking such questions. This was found with only
>> one search for the terms 'python read stdin'
>>
>> Rolf
>>
>> Bernard Desnoues wrote:
>>
>>> Hi,
>>>
>>> I've got a problem with the use of Redmon (redirection port monitor).
>>> I intend to develop a virtual printer so that I can modify data sent
>>> to the printer.
>>> Redmon send the data flow to the standard input and lauchs the Python
>>> program which send modified data to the standard output (Windows XP
>>> and Python 2.5 context).
>>> I can manipulate the standard output.
>>>
>>> "import sys
>>> sys.stdout.write(data)"
>>>
>>> it works.
>>> But how to manipulate standard input so that I can store data in a
>>> string or in an object file ? There's no "read" method.
>>>
>>> "a = sys.stdin.read()" doesn't work.
>>> "f = open(sys.stdin)" doesn't work.
>>>
>>> I don't find anything in the documentation. How to do that ?
>>> Thanks in advance.
>>>
>>> Bernard Desnoues
>>> Librarian
>>> Bibliothèque de géographie - Sorbonne
>>>

>
> Hello Rolf,
>
> I know this code because I have search a solution !
> Your google code doesn't work ! No attribute "readlines".
>
> >>> import sys
> >>> data = sys.stdin.readlines()

>
> Traceback (most recent call last):
> File "<pyshell#1>", line 1, in <module>
> data = sys.stdin.readlines()
> AttributeError: readlines
>


Bernard Desnoues 01-22-2008 09:42 AM

Re: stdin, stdout, redmon
 
Hello,

I checked under linux and it works :
text.txt :
"first line of the text file
second line of the text file"

test.py :
"import sys
a = sys.stdin.readlines()
x = ''.join(a)
x = x.upper()
sys.stdout.write(x)"

>cat text.txt | python test.py


But I reinstalled Python 2.5 under Windows XP and it doesn't work
anyway. Can you confirm that your script works with Win XP and Python 2.5 ?

Regards

Rolf van de Krol a écrit :
> I don't know what you did with your Python installation, but for me this
> works perfectly.
>
> test3.py contains:
> <code>
> import sys
>
> print sys.stdin.readlines()
> </code>
>
> test.txt contains:
> <code>
> Testline1
> Testline2
> </code>
>
> Output of 'python test3.py < test.txt' is:
> <code>
> ['Testline1\n', 'Testline2']
> </code>
>
> Just plain simple and just works.
>
> Rolf
>
>
>
> Bernard Desnoues wrote:
>> Rolf van de Krol a écrit :
>>
>>> According to various tutorials this should work.
>>>
>>> <code>
>>> |import sys
>>> data = sys.stdin.readlines()
>>> print "Counted", len(data), "lines."|
>>> </code>
>>>
>>> Please use google before asking such questions. This was found with
>>> only one search for the terms 'python read stdin'
>>>
>>> Rolf
>>>
>>> Bernard Desnoues wrote:
>>>
>>>> Hi,
>>>>
>>>> I've got a problem with the use of Redmon (redirection port
>>>> monitor). I intend to develop a virtual printer so that I can modify
>>>> data sent to the printer.
>>>> Redmon send the data flow to the standard input and lauchs the
>>>> Python program which send modified data to the standard output
>>>> (Windows XP and Python 2.5 context).
>>>> I can manipulate the standard output.
>>>>
>>>> "import sys
>>>> sys.stdout.write(data)"
>>>>
>>>> it works.
>>>> But how to manipulate standard input so that I can store data in a
>>>> string or in an object file ? There's no "read" method.
>>>>
>>>> "a = sys.stdin.read()" doesn't work.
>>>> "f = open(sys.stdin)" doesn't work.
>>>>
>>>> I don't find anything in the documentation. How to do that ?
>>>> Thanks in advance.
>>>>
>>>> Bernard Desnoues
>>>> Librarian
>>>> Bibliothèque de géographie - Sorbonne
>>>>

>>
>> Hello Rolf,
>>
>> I know this code because I have search a solution !
>> Your google code doesn't work ! No attribute "readlines".
>>
>> >>> import sys
>> >>> data = sys.stdin.readlines()

>>
>> Traceback (most recent call last):
>> File "<pyshell#1>", line 1, in <module>
>> data = sys.stdin.readlines()
>> AttributeError: readlines


Tim Golden 01-22-2008 09:58 AM

Re: stdin, stdout, redmon
 
Bernard Desnoues wrote:
> Hello,
>
> I checked under linux and it works :
> text.txt :
> "first line of the text file
> second line of the text file"
>
> test.py :
> "import sys
> a = sys.stdin.readlines()
> x = ''.join(a)
> x = x.upper()
> sys.stdout.write(x)"
>
> >cat text.txt | python test.py

>
> But I reinstalled Python 2.5 under Windows XP and it doesn't work
> anyway. Can you confirm that your script works with Win XP and Python 2.5 ?


How are you invoking the script under WinXP? If you're
using the standard file associations then stdin/stdout
won't work correctly. However, they produce a specific
error message:

<dump>
C:\temp>type test3.py
import sys

print sys.stdin.readlines ()
C:\temp>
C:\temp>type test3.py | test3.py
Traceback (most recent call last):
File "C:\temp\test3.py", line 3, in <module>
print sys.stdin.readlines ()
IOError: [Errno 9] Bad file descriptor

C:\temp>type test3.py | python test3.py
['import sys\n', '\n', 'print sys.stdin.readlines ()']

</dump>

TJG

John Machin 01-22-2008 10:02 AM

Re: stdin, stdout, redmon
 
On Jan 22, 8:42 pm, Bernard Desnoues <bernard.desno...@univ-paris1.fr>
wrote:
> Hello,
>
> I checked under linux and it works :
> text.txt :
> "first line of the text file
> second line of the text file"
>
> test.py :
> "import sys
> a = sys.stdin.readlines()
> x = ''.join(a)
> x = x.upper()
> sys.stdout.write(x)"
>
> >cat text.txt | python test.py

>
> But I reinstalled Python 2.5 under Windows XP and it doesn't work
> anyway. Can you confirm that your script works with Win XP and Python 2.5 ?
>
> Regards
>
> Rolf van de Krol a écrit :
>
> > I don't know what you did with your Python installation, but for me this
> > works perfectly.

>
> > test3.py contains:
> > <code>
> > import sys

>
> > print sys.stdin.readlines()
> > </code>

>
> > test.txt contains:
> > <code>
> > Testline1
> > Testline2
> > </code>

>
> > Output of 'python test3.py < test.txt' is:
> > <code>
> > ['Testline1\n', 'Testline2']
> > </code>

>
> > Just plain simple and just works.

>
> > Rolf

>
> > Bernard Desnoues wrote:
> >> Rolf van de Krol a écrit :

>
> >>> According to various tutorials this should work.

>
> >>> <code>
> >>> |import sys
> >>> data = sys.stdin.readlines()
> >>> print "Counted", len(data), "lines."|
> >>> </code>

>
> >>> Please use google before asking such questions. This was found with
> >>> only one search for the terms 'python read stdin'

>
> >>> Rolf

>
> >>> Bernard Desnoues wrote:

>
> >>>> Hi,

>
> >>>> I've got a problem with the use of Redmon (redirection port
> >>>> monitor). I intend to develop a virtual printer so that I can modify
> >>>> data sent to the printer.
> >>>> Redmon send the data flow to the standard input and lauchs the
> >>>> Python program which send modified data to the standard output
> >>>> (Windows XP and Python 2.5 context).
> >>>> I can manipulate the standard output.

>
> >>>> "import sys
> >>>> sys.stdout.write(data)"

>
> >>>> it works.
> >>>> But how to manipulate standard input so that I can store data in a
> >>>> string or in an object file ? There's no "read" method.

>
> >>>> "a = sys.stdin.read()" doesn't work.
> >>>> "f = open(sys.stdin)" doesn't work.

>
> >>>> I don't find anything in the documentation. How to do that ?
> >>>> Thanks in advance.

>
> >>>> Bernard Desnoues
> >>>> Librarian
> >>>> Bibliothèque de géographie - Sorbonne

>
> >> Hello Rolf,

>
> >> I know this code because I have search a solution !
> >> Your google code doesn't work ! No attribute "readlines".

>
> >> >>> import sys
> >> >>> data = sys.stdin.readlines()

>
> >> Traceback (most recent call last):
> >> File "<pyshell#1>", line 1, in <module>
> >> data = sys.stdin.readlines()
> >> AttributeError: readlines


Excuse me, gentlemen, may I be your referee *before* you resort to
pistols at dawn?

===== IDLE =====
IDLE 1.2.1
>>> import sys
>>> sys.stdin.readlines


Traceback (most recent call last):
File "<pyshell#1>", line 1, in <module>
sys.stdin.readlines
AttributeError: readlines
>>>


===== Command Prompt =====
C:\junk>python
Python 2.5.1 (r251:54863, Apr 18 2007, 08:51:08) [MSC v.1310 32 bit
(Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> sys.stdin.readlines

<built-in method readlines of file object at 0x00B1F020>
>>>


HTH,
John

Rolf van de Krol 01-22-2008 01:02 PM

Re: stdin, stdout, redmon
 
Well, that's at least weird. I did test my code with Python 2.5 on Win
XP, using the command prompt. But testing it with IDLE gives exactly the
same error Bernard has. So apparently STDIN can't be accessed with IDLE.

Rolf

John Machin wrote:
>
> Excuse me, gentlemen, may I be your referee *before* you resort to
> pistols at dawn?
>
> ===== IDLE =====
> IDLE 1.2.1
>
>>>> import sys
>>>> sys.stdin.readlines
>>>>

>
> Traceback (most recent call last):
> File "<pyshell#1>", line 1, in <module>
> sys.stdin.readlines
> AttributeError: readlines
>
>
> ===== Command Prompt =====
> C:\junk>python
> Python 2.5.1 (r251:54863, Apr 18 2007, 08:51:08) [MSC v.1310 32 bit
> (Intel)] on win32
> Type "help", "copyright", "credits" or "license" for more information.
>
>>>> import sys
>>>> sys.stdin.readlines
>>>>

> <built-in method readlines of file object at 0x00B1F020>
>
>
> HTH,
> John
>


Konstantin Shaposhnikov 01-22-2008 01:54 PM

Re: stdin, stdout, redmon
 
Hi,

This is Windows bug that is described here: http://support.microsoft.com/default.aspx?kbid=321788

This article also contains solution: you need to add registry value:

HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\Curr entVersion\Policies
\Explorer
InheritConsoleHandles = 1 (REG_DWORD type)

Do not forget to launch new console (cmd.exe) after editing registry.

Alternatively you can use following command

cat file | python script.py

instead of

cat file | python script.py

Regards,
Konstantin

On Jan 22, 1:02 pm, Rolf van de Krol <pyt...@rolfvandekrol.nl> wrote:
> Well, that's at least weird. I did test my code with Python 2.5 on Win
> XP, using the command prompt. But testing it with IDLE gives exactly the
> same error Bernard has. So apparently STDIN can't be accessed with IDLE.
>
> Rolf
>
> John Machin wrote:
>
> > Excuse me, gentlemen, may I be your referee *before* you resort to
> > pistols at dawn?

>
> > ===== IDLE =====
> > IDLE 1.2.1

>
> >>>> import sys
> >>>> sys.stdin.readlines

>
> > Traceback (most recent call last):
> > File "<pyshell#1>", line 1, in <module>
> > sys.stdin.readlines
> > AttributeError: readlines

>
> > ===== Command Prompt =====
> > C:\junk>python
> > Python 2.5.1 (r251:54863, Apr 18 2007, 08:51:08) [MSC v.1310 32 bit
> > (Intel)] on win32
> > Type "help", "copyright", "credits" or "license" for more information.

>
> >>>> import sys
> >>>> sys.stdin.readlines

>
> > <built-in method readlines of file object at 0x00B1F020>

>
> > HTH,
> > John



Konstantin Shaposhnikov 01-22-2008 02:10 PM

Re: stdin, stdout, redmon
 
Sorry, I meant:

Alternatively you can use following command

cat file | python script.py

instead of

cat file | script.py




On Jan 22, 1:54 pm, Konstantin Shaposhnikov <k.shaposhni...@gmail.com>
wrote:
> Hi,
>
> This is Windows bug that is described here:http://support.microsoft.com/default.aspx?kbid=321788
>
> This article also contains solution: you need to add registry value:
>
> HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\Curr entVersion\Policies
> \Explorer
> InheritConsoleHandles = 1 (REG_DWORD type)
>
> Do not forget to launch new console (cmd.exe) after editing registry.
>
> Alternatively you can use following command
>
> cat file | python script.py
>
> instead of
>
> cat file | python script.py
>
> Regards,
> Konstantin
>
> On Jan 22, 1:02 pm, Rolf van de Krol <pyt...@rolfvandekrol.nl> wrote:
>
> > Well, that's at least weird. I did test my code with Python 2.5 on Win
> > XP, using the command prompt. But testing it with IDLE gives exactly the
> > same error Bernard has. So apparently STDIN can't be accessed with IDLE.

>
> > Rolf

>
> > John Machin wrote:

>
> > > Excuse me, gentlemen, may I be your referee *before* you resort to
> > > pistols at dawn?

>
> > > ===== IDLE =====
> > > IDLE 1.2.1

>
> > >>>> import sys
> > >>>> sys.stdin.readlines

>
> > > Traceback (most recent call last):
> > > File "<pyshell#1>", line 1, in <module>
> > > sys.stdin.readlines
> > > AttributeError: readlines

>
> > > ===== Command Prompt =====
> > > C:\junk>python
> > > Python 2.5.1 (r251:54863, Apr 18 2007, 08:51:08) [MSC v.1310 32 bit
> > > (Intel)] on win32
> > > Type "help", "copyright", "credits" or "license" for more information.

>
> > >>>> import sys
> > >>>> sys.stdin.readlines

>
> > > <built-in method readlines of file object at 0x00B1F020>

>
> > > HTH,
> > > John




All times are GMT. The time now is 11:40 AM.

Powered by vBulletin®. Copyright ©2000 - 2014, vBulletin Solutions, Inc.
SEO by vBSEO ©2010, Crawlability, Inc.