By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
439,957 Members | 2,017 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 439,957 IT Pros & Developers. It's quick & easy.

how to pass scripts to python -c

P: n/a
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
Jul 18 '05 #1
Share this Question
Share on Google+
2 Replies


P: n/a
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

Daniel Kramer wrote:
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

Jul 18 '05 #2

P: n/a
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

Daniel Kramer wrote:
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

Jul 18 '05 #3

This discussion thread is closed

Replies have been disabled for this discussion.