I don't understand the differences between Terminal/Shell/Interpreter/Command Prompt
macos - How to run Python script on terminal? - Stack Overflow
command line - Creating a Terminal Program with Python - Stack Overflow
Why does anyone run python in the terminal?
Videos
Lots of terminology flying around about the environment within which python can be run - could someone please explain like I'm five?
Edit: Also where does IDE fit in? How do you interact with python through an IDE and how does it differ
You need python installed on your system. Then you can run this in the terminal in the correct directory:
python gameover.py
This Depends on what version of python is installed on you system. See below.
If You have Python 2.* version you have to run this command
python gameover.py
But if you have Python 3.* version you have to run this command
python3 gameover.py
Because for MAC with Python version 3.* you will get command not found error
if you run "python gameover.py"
On a *nix system (linux/unix),
if you:
$ chmod 0744 your_file.py
-rwxr--r-- your_file.py
and add the path to python as the first line of your_file.py:
#!/usr/bin/python
or (in my case):
#!/usr/local/bin/python
Once you do that, instead of running it like this:
$ python your_file.py
You can run it like this:
$ ./your_file.py
or even rename it to yourfile and run it like this:
$ ./yourfile
and if you then copy yourfile to your bin (i.e. #!/usr/bin/, or #!/usr/local/bin/)
you can run it like this:
$ yourfile
Then you can...
Use raw_input() to solicit and get input from you user.
your_file.py:
#!/usr/local/bin/python
import os
while(True):
# cntrl-c to quit
input = raw_input('your_prompt$ ')
input = input.split()
if input[0] == 'ls':
dire = '.'
if len(input) > 1:
dire = input[1]
print('\n'.join(os.listdir(dire)))
else:
print('error')
your_file.py use example:
$ chmod 744 your_file.py
$ cp your_file.py /usr/local/bin/your_file
$ your_file
your_prompt$ ls
list_argv.py
your_file.py
your_ls.py
your_subprocess.py
your_prompt$ ls .
list_argv.py
your_file.py
your_ls.py
your_subprocess.py
your_prompt$ pwd
error
your_prompt$ ^CTraceback (most recent call last):
File "/usr/local/bin/your_file", line 7, in <module>
input = raw_input('your_prompt$ ')
KeyboardInterrupt
$
Grab arguments with sys.argv from the command line when you run your script:
list_argv.py:
#!/usr/local/bin/python
import sys
print(sys.argv)
list_argv.py use example:
$ python list_argv.py
['list_argv.py']
$ python list_argv.py hello
['list_argv.py', 'hello']
$ python list_argv.py hey yo
['list_argv.py', 'hey', 'yo']
$ chmod 744 list_argv.py
$ ./list_argv.py
['./list_argv.py']
$ ./list_argv.py hi
['./list_argv.py', 'hi']
$ ./list_argv.py hey yo
['./list_argv.py', 'hey', 'yo']
$ cp list_argv.py /usr/local/bin/list_argv
$ list_argv hey yo
['/usr/local/bin/list_argv', 'hey', 'yo']
Replace raw_input() with sys.argv.
'your_ls.py':
#!/usr/local/bin/python
import sys
import os
dire = '.'
if len(sys.argv) > 1:
dire = sys.argv[1]
print('\n'.join(os.listdir(dire)))
'your_ls.py' use example:
$ chmod 744 your_ls.py
$ cp your_ls.py /usr/local/bin/your_ls
$ your_ls
list_argv.py
your_file.py
your_ls.py
your_subprocess.py
$ your_ls .
list_argv.py
your_file.py
your_ls.py
your_subprocess.py
$ your_ls blah
Traceback (most recent call last):
File "/usr/local/bin/your_ls", line 9, in <module>
print('\n'.join(os.listdir(dire)))
OSError: [Errno 2] No such file or directory: 'blah'
Use subprocess.Popen to access anything you could from the command line.
your_subprocess.py:
#!/usr/local/bin/python
import os
import subprocess
while(True):
# cntrl-c to quit
input = raw_input('your_prompt$ ')
process = subprocess.Popen(input, shell=True,
stdout=subprocess.PIPE,
stderr=subprocess.PIPE)
out, err = process.communicate()
print(out)
print(err)
your_subprocess.py use example:
$ chmod 744 your_subprocess.py
$ cp your_subprocess.py /usr/local/bin/your_subprocess
$ your_subprocess
your_prompt$ ls
list_argv.py
your_file.py
your_ls.py
your_subprocess.py
your_prompt$ ls .
list_argv.py
your_file.py
your_ls.py
your_subprocess.py
your_prompt$ pwd
/Users/ox/_workspace/cmd_ln
your_prompt$ blah
/bin/sh: blah: command not found
your_prompt$ ^CTraceback (most recent call last):
File "/usr/local/bin/your_subprocess", line 8, in <module>
input = raw_input('your_prompt$ ')
KeyboardInterrupt
$
BREAK STUFF!
:-D
HAVE FUN!
-ox
A true command-line program is something in the vein of ls or grep; it is started from the command-line, but it's non-interactive and can be used in pipelines and combined with other command-line programs. A typical command-line program is not interactive on its own, instead relying on shell for interaction, and on an init file for customization.
What you want to create is a TUI (text user interface) application, that uses the full capabilities of the TTY as an interactive platform. To do that, look up curses.
I always use a text editor and run my code from in there.. why would someone want to go directly to a command prompt and do it there?
Option 1: Call the interpreter
- For Python 2:
python <filename>.py - For Python 3:
python3 <filename>.py
Option 2: Let the script call the interpreter
- Make sure the first line of your file has
#!/usr/bin/env python. - Make it executable -
chmod +x <filename>.py. - And run it as
./<filename>.py
Just prefix the script's filename with python. E.g.:
python filename.py