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
11 回答
要读取用户输入,您可以尝试使用the cmd module轻松创建一个迷你命令行解释器(带有帮助文本和自动完成)和raw_input(用于Python 3的input),以便从用户那里读取一行文本 .
命令行输入位于
sys.argv
中 . 在您的脚本中尝试此操作:解析命令行选项有两个模块:optparse(自Python 2.7起不推荐使用,而使用argparse)和getopt . 如果您只想将文件输入脚本,请注意fileinput的强大功能 .
Python library reference是你的朋友 .
或者对于Python 3:
Python 3.x中不再提供
raw_input
. 但是raw_input
被重命名为input
,因此存在相同的功能 .Documentation of the change
处理命令行参数的最佳方法是argparse module.
使用
raw_input()
获取用户输入 . 如果您导入readline module,您的用户将拥有行编辑和历史记录 .小心不要使用
input
功能,除非你知道你在做什么 . 与raw_input
不同,input
将接受任何python表达式,所以它有点像eval
这个简单的程序可以帮助您了解如何从命令行提供用户输入,并显示有关传递无效参数的帮助 .
1)找到5的平方根
2)传递除数字以外的无效参数
使用'raw_input'从控制台/终端输入 .
如果您只是想要一个命令行参数,例如文件名或者某些内容,例如
然后你可以使用sys.argv ...
sys.argv是一个列表,其中0是程序名,因此在上面的例子中sys.argv [1]将是“file_name.txt”
如果要使用完整的命令行选项,请使用optparse模块 .
PEV
如果您运行的是Python <2.7,则需要optparse,正如文档所解释的那样,它将为运行应用程序时调用的命令行参数创建一个接口 .
但是,在Python≥2.7中,不推荐使用optparse,并将其替换为argparse,如上所示 . 来自文档的快速示例......
从Python 3.2 2.7开始,现在有argparse用于处理命令行参数 .
如果它是3.x版本,那么只需使用:
例如,您要输入8:
x将等于8但它将是一个字符串,除非你另外定义它 .
所以你可以使用convert命令,如:
在Python 2中:
在Python 3中: