how to pass scripts to python -c

D

Daniel Kramer

what are the formatting rules to passing python commands to the python
command line? I've tried the following, which works:

echo hello | python -c "import sys; print sys.stdin.read()[:4]"

I'm actually trying to shell out of another scripting lang that's not
very good at string parsing to have python do some work.. the only
problem is this other lang doesn't like the ";" in my python command
string and fails. Is there another notation I can use on a single
line to tell python that there is a line break?

I tried:
echo hello | python -c "import sys\n print sys.stdin.read()[:4]"

but that doesn't work

any suggestions?

thanks

daniel
 
G

Guillermo Fernandez Castellanos

As I understood your question, you want to pass information to your python
program from your command line.

Like:
python pycat.py < file.txt
Or:
python pycat.py file1.txt file2.txt
Or:
cat file1 file2 | python pycat.py
Or:
python pycat.py
(in this last case you write what you want and must push Crt-D to make what you
wrote echoed to the terminal, and you can start again).

You can do this with the library fileinput.

This is a sample code that works and do what you expect from the last examples.
It's a very simple cat program:

#### pycat.py ####
import fileinput
if __name__=='__main__':
for line in fileinput.input():
print line,

Regards,

Guille
 
G

Guillermo Fernandez Castellanos

Oh! I found another version:

#### pycat.py ####
#!/usr/bin/env python
import sys
if len(sys.argv)==1:
while(1):
readed=sys.stdin.read(1)
sys.stdout.write(readed)
else:
for files in sys.argv[1:]:
filed=file(files,'r')
readed=filed.read()
sys.stdout.write(readed)


Don't ask me why you must put read(1) and not simply read(), it works, and I'm
happy :)
But if someone could explain me why it works, it would be cool.

Regards,

Guille
 

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,764
Messages
2,569,564
Members
45,041
Latest member
RomeoFarnh

Latest Threads

Top