Python学习——访问命令行参数、标准输入输出

一、sys模块

       通过sys.argv()函数访问命令行参数,sys.argv()生成的是一个列表,argv[0]访问脚本,argv[1]访问第一个参数,argv[2]访问第二个参数。

例1、通过调用命令行参数n,生成n个随机数。

#访问命令行
import sys,random
n = int(sys.argv[1]) #调用命令行第一个参数,即n
for i in range(n): #循环生成n个随机数并打印
 print(random.randrange(0,100))

注:在调用程序时,需要在命令行输入n的具体值。若在IDLE操作系统中,需要在运行(Run)的下拉菜单中选择Run...Customize选项中输入参数值。

例2、输入n个整数并求和,n由命令行参数决定。

import sys
n = int(sys.argv[1]) #设置n的值为命令行参数
sum = 0
for i in range(n):
    number = int(input("请任意输入一个整数:")) #input()输入
    sum +=number
print('累加结果为:',sum) 

 注:在本例中固定了输入整数的个数n,也就是必须输入n个数整个程序才会运行结束,这一过程不是交互式输入;在例5中将展示交互式用户输入,输入的次数是随机的依赖于用户的输入值。

例3、读取并输出本脚本文件。

import sys
filename = sys.argv[0] #访问脚本名
f = open(filename,'r',encoding='utf8') #open()函数读取了脚本文件,f是文件对象,r表示以只读方式打开
line_no = 0
while True:
    line_no += 1  #行数计数
    line = f.readline() #文件对象的readline()函数读取一行文本
    if line: #用来判断line变量是否有值
        print(line_no,':',line)
    else:
        break
f.close() 

        在这个例子中使用open()函数读取了一个脚本文件,open()函数也可以用来读取文本文件和二进制文件等其他文件类型,生成文件对象。readline()就是一个文件对象方法,用来逐行读取文件内容。

注:在使用open函数读取文件后,必须要在最后再用close函数关闭文件,否则这个文件就会一直处于读取的状态,其他的程序将无法调用;否则,可以使用with语句。

二、argparse模块

argparse模块进行参数解析的特定使用方法:

  1. 创建解析器。首先导入argparse模块之后,创建一个ArgumentParser对象,作为命令行解析的起点。
  2. 添加参数。使用add_argument()函数对上述ArgumentParser对象定义可接受的命令行参数,同时可以指定参数的名称、类型、默认值、帮助信息等。
  3. 解析参数parse_args()函数用来解析命令行参数,生成一个列表。
  4. 访问参数。通过第2步参数名来访问。

 例4、解析命令行参数所输入的长方形的长和宽的值,计算输出面积。

import argparse #用户友好的命令行接口
parser = argparse.ArgumentParser() #创建ArgumentParser对象是一个解析器
parser.add_argument('--length',default=10,type=int,help='长度') #添加参数length
parser.add_argument('--width',default=5,type=int,help='宽度') #添加参数width
args = parser.parse_args() #解析参数
area = args.length * args.width #访问参数并计算
print('面积=',area)

注:此时要调用脚本时命令行的输入要包含参数名,参数可以调换顺序。 例如:在命令行输入--length 3 --width 4 和 --width 4 --length 3,结果是一样的。若命令行没有参数值,则输出参数默认值的计算结果。

三、一个交互式用户输入例子

例5、输入批量数据,当输入-1时终止输入,统计输入数据的个数并对其求和、求平均值。

a = [] #定义空的列表用来存放输入的数据
x = float(input("请输入一个实数,输入-1则终止:")) #输入第一个值
while x != -1:
    a.append(x)
    x=float(input("请输入一个实数,输入-1则终止:"))
print("计数",len(a))
print("求和",sum(a))
print("均值",sum(a)/len(a))
  • 13
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值