User input and command line arguments
Question:
How do I have a Python script that can accept user input and how do I make it read in arguments if run from the command line?
Answers:
var = raw_input("Please enter something: ")
print "you entered", var
Or for Python 3:
var = input("Please enter something: ")
print("You entered: " + var)
The best way to process command line arguments is the argparse
module.
Use raw_input()
to get user input. If you import the readline module
your users will have line editing and history.
To read user input you can try the cmd
module for easily creating a mini-command line interpreter (with help texts and autocompletion) and raw_input
(input
for Python 3+) for reading a line of text from the user.
text = raw_input("prompt") # Python 2
text = input("prompt") # Python 3
Command line inputs are in sys.argv
. Try this in your script:
import sys
print (sys.argv)
There are two modules for parsing command line options: optparse
(deprecated since Python 2.7, use argparse
instead) and getopt
. If you just want to input files to your script, behold the power of fileinput
.
The Python library reference is your friend.
Use ‘raw_input’ for input from a console/terminal.
if you just want a command line argument like a file name or something e.g.
$ python my_prog.py file_name.txt
then you can use sys.argv…
import sys
print sys.argv
sys.argv is a list where 0 is the program name, so in the above example sys.argv[1] would be “file_name.txt”
If you want to have full on command line options use the optparse module.
Pev
Careful not to use the input
function, unless you know what you’re doing. Unlike raw_input
, input
will accept any python expression, so it’s kinda like eval
As of Python 3.2 2.7, there is now argparse for processing command line arguments.
raw_input
is no longer available in Python 3.x. But raw_input
was renamed input
, so the same functionality exists.
input_var = input("Enter something: ")
print ("you entered " + input_var)
If you are running Python <2.7, you need optparse, which as the doc explains will create an interface to the command line arguments that are called when your application is run.
However, in Python ≥2.7, optparse has been deprecated, and was replaced with the argparse as shown above. A quick example from the docs…
The following code is a Python program that takes a list of integers
and produces either the sum or the max:
import argparse
parser = argparse.ArgumentParser(description='Process some integers.')
parser.add_argument('integers', metavar='N', type=int, nargs='+',
help='an integer for the accumulator')
parser.add_argument('--sum', dest='accumulate', action='store_const',
const=sum, default=max,
help='sum the integers (default: find the max)')
args = parser.parse_args()
print args.accumulate(args.integers)
This simple program helps you in understanding how to feed the user input from command line and to show help on passing invalid argument.
import argparse
import sys
try:
parser = argparse.ArgumentParser()
parser.add_argument("square", help="display a square of a given number",
type=int)
args = parser.parse_args()
#print the square of user input from cmd line.
print args.square**2
#print all the sys argument passed from cmd line including the program name.
print sys.argv
#print the second argument passed from cmd line; Note it starts from ZERO
print sys.argv[1]
except:
e = sys.exc_info()[0]
print e
1) To find the square root of 5
C:UsersDesktop>python -i emp.py 5
25
['emp.py', '5']
5
2) Passing invalid argument other than number
C:Usersbgh37516Desktop>python -i emp.py five
usage: emp.py [-h] square
emp.py: error: argument square: invalid int value: 'five'
<type 'exceptions.SystemExit'>
If it’s a 3.x version then just simply use:
variantname = input()
For example, you want to input 8:
x = input()
8
x will equal 8 but it’s going to be a string except if you define it otherwise.
So you can use the convert command, like:
a = int(x) * 1.1343
print(round(a, 2)) # '9.07'
9.07
In Python 2:
data = raw_input('Enter something: ')
print data
In Python 3:
data = input('Enter something: ')
print(data)
import six
if six.PY2:
input = raw_input
print(input("What's your name? "))
How do I have a Python script that can accept user input and how do I make it read in arguments if run from the command line?
var = raw_input("Please enter something: ")
print "you entered", var
Or for Python 3:
var = input("Please enter something: ")
print("You entered: " + var)
The best way to process command line arguments is the argparse
module.
Use raw_input()
to get user input. If you import the readline module
your users will have line editing and history.
To read user input you can try the cmd
module for easily creating a mini-command line interpreter (with help texts and autocompletion) and raw_input
(input
for Python 3+) for reading a line of text from the user.
text = raw_input("prompt") # Python 2
text = input("prompt") # Python 3
Command line inputs are in sys.argv
. Try this in your script:
import sys
print (sys.argv)
There are two modules for parsing command line options: (deprecated since Python 2.7, use optparse
argparse
instead) and getopt
. If you just want to input files to your script, behold the power of fileinput
.
The Python library reference is your friend.
Use ‘raw_input’ for input from a console/terminal.
if you just want a command line argument like a file name or something e.g.
$ python my_prog.py file_name.txt
then you can use sys.argv…
import sys
print sys.argv
sys.argv is a list where 0 is the program name, so in the above example sys.argv[1] would be “file_name.txt”
If you want to have full on command line options use the optparse module.
Pev
Careful not to use the input
function, unless you know what you’re doing. Unlike raw_input
, input
will accept any python expression, so it’s kinda like eval
As of Python 3.2 2.7, there is now argparse for processing command line arguments.
raw_input
is no longer available in Python 3.x. But raw_input
was renamed input
, so the same functionality exists.
input_var = input("Enter something: ")
print ("you entered " + input_var)
If you are running Python <2.7, you need optparse, which as the doc explains will create an interface to the command line arguments that are called when your application is run.
However, in Python ≥2.7, optparse has been deprecated, and was replaced with the argparse as shown above. A quick example from the docs…
The following code is a Python program that takes a list of integers
and produces either the sum or the max:
import argparse
parser = argparse.ArgumentParser(description='Process some integers.')
parser.add_argument('integers', metavar='N', type=int, nargs='+',
help='an integer for the accumulator')
parser.add_argument('--sum', dest='accumulate', action='store_const',
const=sum, default=max,
help='sum the integers (default: find the max)')
args = parser.parse_args()
print args.accumulate(args.integers)
This simple program helps you in understanding how to feed the user input from command line and to show help on passing invalid argument.
import argparse
import sys
try:
parser = argparse.ArgumentParser()
parser.add_argument("square", help="display a square of a given number",
type=int)
args = parser.parse_args()
#print the square of user input from cmd line.
print args.square**2
#print all the sys argument passed from cmd line including the program name.
print sys.argv
#print the second argument passed from cmd line; Note it starts from ZERO
print sys.argv[1]
except:
e = sys.exc_info()[0]
print e
1) To find the square root of 5
C:UsersDesktop>python -i emp.py 5
25
['emp.py', '5']
5
2) Passing invalid argument other than number
C:Usersbgh37516Desktop>python -i emp.py five
usage: emp.py [-h] square
emp.py: error: argument square: invalid int value: 'five'
<type 'exceptions.SystemExit'>
If it’s a 3.x version then just simply use:
variantname = input()
For example, you want to input 8:
x = input()
8
x will equal 8 but it’s going to be a string except if you define it otherwise.
So you can use the convert command, like:
a = int(x) * 1.1343
print(round(a, 2)) # '9.07'
9.07
In Python 2:
data = raw_input('Enter something: ')
print data
In Python 3:
data = input('Enter something: ')
print(data)
import six
if six.PY2:
input = raw_input
print(input("What's your name? "))