首页 > 编程语言 >Python学习——访问命令行参数、标准输入输出

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

时间:2024-03-27 20:32:10浏览次数:34  
标签:Python 输入输出 argv sys 参数 命令行 print 输入

一、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))

标签:Python,输入输出,argv,sys,参数,命令行,print,输入
From: https://blog.csdn.net/fdhjflbj/article/details/137080741

相关文章

  • 强力工具(欢迎fork):Java版本的Sybase ASE ISQL命令行
    \1.背景曾经,经常遇到有人问,Sybase(ASE,国内基本上把以前的SybaseASE数据库简称为Sybase数据库,现在官方已经叫做SAPASE,在我看来无所谓。只要大家知道它是哪个数据库就行了。)数据库有没有短小点的命令行工具。我说,昨个短小法?SybaseASE确实自带一个isql命令行,功能也很......
  • python-列表、元组、字符串、集合、字典等用法
    目录1.列表(list)1.1  列表的定义语法1.2  列表的下标索引1.3  列表的常用操作1.4  列表的循环遍历示例2.元组(tuple)3.字符串4.数据容器(序列)的切片4.2序列切片课后练习5.集合(set)5.1  集合的操作方法6.字典(dict)7.容器排序,排序之后会变成列表对象1.......
  • 【华为OD机试真题】C卷-模拟目录管理功能(Python)
    一、题目描述【华为OD机试真题】C卷-模拟目录管理功能(Python)题目描述:实现一个模拟目录管理功能的软件,输入一个命令序列,输出最后一条命令运行结果。支持命令:1、创建目录命令:mkdir目录名称,如mkdirabc为在当前目录创建abc目录,如果已存在同名目录则不执行任何操作。此命......
  • 手把手教你用python一键抢12306火车票(附代码)
    哈喽,哈喽~,一年一度的抢火车票大战正式拉开序幕…然饿大多数人碰到的是这种情况:当你满心期待摩拳擦掌准备抢票的时候,你会发现一票难求!想回趟家真难!那么作为程序猿的你,当然要用程序猿的方式来抢票!下面分享用python来抢票!网站提供各种免费资源!城市cookie可根据具体需求自行添加!链......
  • Python 使用 Cloudflare API 自动修改 DNS 记录教程
    本教程介绍了如何使用Python和CloudflareAPI自动修改DNS记录,包括API密钥的获取、API请求的构建以及DNS记录的更新。准备工作1、注册Cloudflare账号你需要在Cloudflare官网(https://www.cloudflare.com/)注册一个账号。2、添加需要修改DNS记录的域名登录Cloudflare......
  • python笔记(3)基本数据类型简介
    目录python3的六个标准数据类型Numbers(数字) 数值运算String(字符串)List(列表)Tuple(元组)Sets(集合)set()函数有两用方式使用set运算Dictionaries(字典)python3的六个标准数据类型Numbers(数字)String(字符串)List(列表)Tuple(元组)Dictionaries(字典)Set(集合)......
  • Python学习day3
    知识:#继承,创建有继承的类#父类、子类#class子类(父类):#调用时找父类的构造函数,如果子类自己有某函数则调用子类的,否则调用父类的#在子类有构造函数的时候调用父类,可以用super().__init__的方法调用父类函数代码:#举例人力系统classstaff:def__init__(self,na......
  • Python篇之网络编程,实现简单的服务端和客户端的内容传输
    本小节内容:实现简单的信息交流文章目录一、Socket介绍二、客户端与服务端三、在python中实现网络通信1.服务端2.客户端3.连接测试一、Socket介绍socket(简称套接字)模块是其内置的标准库之一,它实现了BSDsocketsAPI,允许开发者在Python程序中进行网络通......
  • 【Python系列】Python 中 YAML 文件与字典合并的实用技巧
    ......
  • 【Python】Python基本数据类型(超详细)
    前言在上一篇文章我们简单介绍了一下Python,本章我们就开始正式学习Python,在此之前,考虑到Python环境有的小伙伴可能没有,所有我开了一个QQ群,里面有代码编辑器(PyCharm)的安装与破解使用,如果有大佬需要的话可以加群自行安装,这个群创建的目的也是方便各位讨论技术,QQ群号:455341......