Reputation: 1637
Is there a Python argument to execute code from the shell without starting up an interactive interpreter or reading from a file? Something similar to:
perl -e 'print "Hi"'
Upvotes: 139
Views: 115337
Reputation: 85542
This works:
python -c 'print("Hi")'
Hi
From the manual, man python
:
-c command Specify the command to execute (see next section). This termi- nates the option list (following options are passed as arguments to the command).
Upvotes: 226
Reputation: 601
A 'heredoc' can be used to directly feed a script into the python interpreter:
python <<HEREDOC
import sys
for p in sys.path:
print(p)
HEREDOC
/usr/lib64/python36.zip
/usr/lib64/python3.6
/usr/lib64/python3.6/lib-dynload
/home/username/.local/lib/python3.6/site-packages
/usr/local/lib/python3.6/site-packages
/usr/lib64/python3.6/site-packages
/usr/lib/python3.6/site-packages
Upvotes: 41
Reputation: 8215
Another way is to you use bash redirection:
python <<< 'print "Hi"'
And this works also with perl, ruby, and what not.
p.s.
To save quote ' and " for python code, we can build the block with EOF
c=`cat <<EOF
print(122)
EOF`
python -c "$c"
Upvotes: 39
Reputation: 304413
Another way is to use the e
module
eg.
$ python -me 1 + 1
2
Upvotes: 1