Can't get sys.stdin.readlines() to work

T

tinnews

I'm trying to read some data from standard input, what I'm actually
trying to do is process some date pasted in using the mouse cut and
paste on a Linux box (xubuntu 9.10) in a terminal window.

First attempts failed so I'm now trying the trivial:-

import sys
data = sys.stdin.readlines()
print "Counted", len(data), "lines."


When I run this and try to paste something into the terminal window I
get the following errors:-

/home/chris/bin/m2r.py: line 2: syntax error near unexpected token `('
/home/chris/bin/m2r.py: line 2: `data = sys.stdin.readlines()'


It does exactly the same if I try:-

cat | m2r.py

and then paste something into the window.


So - what on earth am I doing wrong?
 
R

Richard Thomas

I'm trying to read some data from standard input, what I'm actually
trying to do is process some date pasted in using the mouse cut and
paste on a Linux box (xubuntu 9.10) in a terminal window.

First attempts failed so I'm now trying the trivial:-

    import sys
    data = sys.stdin.readlines()
    print "Counted", len(data), "lines."

When I run this and try to paste something into the terminal window I
get the following errors:-

    /home/chris/bin/m2r.py: line 2: syntax error near unexpected token `('
    /home/chris/bin/m2r.py: line 2: `data = sys.stdin.readlines()'

It does exactly the same if I try:-

    cat | m2r.py

and then paste something into the window.

So - what on earth am I doing wrong?

You haven't put a shebang line at the top.

#!/usr/bin/env python
import sys
data = sys.stdin.readlines()
....
 
S

Steve Holden

I'm trying to read some data from standard input, what I'm actually
trying to do is process some date pasted in using the mouse cut and
paste on a Linux box (xubuntu 9.10) in a terminal window.

First attempts failed so I'm now trying the trivial:-

import sys
data = sys.stdin.readlines()
print "Counted", len(data), "lines."


When I run this and try to paste something into the terminal window I
get the following errors:-

/home/chris/bin/m2r.py: line 2: syntax error near unexpected token `('
/home/chris/bin/m2r.py: line 2: `data = sys.stdin.readlines()'


It does exactly the same if I try:-

cat | m2r.py

and then paste something into the window.


So - what on earth am I doing wrong?
Trying to run Python scripts with /bin/sh, probably.

First of all, does you PATH include the current directory (.)? It looks
like it does, because your computer seems to be trying to execute the
m2r.py script. However, because that script does not start with a
"shebang" line - the one you need is probably either

#!/usr/bin/python

or

#!/usr/bin/env python

the shell is trying to run the script using the wrong interpreter.

regards
Steve
 
S

Steve Holden

I'm trying to read some data from standard input, what I'm actually
trying to do is process some date pasted in using the mouse cut and
paste on a Linux box (xubuntu 9.10) in a terminal window.

First attempts failed so I'm now trying the trivial:-

import sys
data = sys.stdin.readlines()
print "Counted", len(data), "lines."


When I run this and try to paste something into the terminal window I
get the following errors:-

/home/chris/bin/m2r.py: line 2: syntax error near unexpected token `('
/home/chris/bin/m2r.py: line 2: `data = sys.stdin.readlines()'


It does exactly the same if I try:-

cat | m2r.py

and then paste something into the window.


So - what on earth am I doing wrong?
Trying to run Python scripts with /bin/sh, probably.

First of all, does you PATH include the current directory (.)? It looks
like it does, because your computer seems to be trying to execute the
m2r.py script. However, because that script does not start with a
"shebang" line - the one you need is probably either

#!/usr/bin/python

or

#!/usr/bin/env python

the shell is trying to run the script using the wrong interpreter.

regards
Steve
 
G

Grant Edwards

Trying to run Python scripts with /bin/sh, probably.

Yup. I can't count the number of times I've run ImageMagick's
"import" program unintentionally...
 
T

tinnews

Richard Thomas said:
You haven't put a shebang line at the top.

#!/usr/bin/env python
import sys
data = sys.stdin.readlines()
...

Urk!!! Silly me. That catches me out every few months! :)
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,744
Messages
2,569,484
Members
44,903
Latest member
orderPeak8CBDGummies

Latest Threads

Top