I n p u ta n do u t p u t输入和输出61输入和输出概述Input and output overview 2命令行参数Command line parameter4文件和文件对象F i l e a n d f i l e o b j e c tCONTENT3标准输入和输出函数S t a n d a r d i n p u t a n do u t p u t f u n c t i o n s6重定向和管道Redirection and pipeline 5标准输入、输出和错误流Standard input,output,a n d e r r o r s t r e a m s3输入和输出概述Python程序通常可以使用下列方式之一实现交互功能:•命令行参数•标准输入和输出函数•文件输入和输出•图形化用户界面4命令行参数——sys.argv•命令行参数是Python语言的标准组成。
用户在命令行中Python程序之后输入的参数,程序中可以通过列表sys.argv访问命令行参数。
•argv[0]为Python脚本名,argv[1]为第一个参数,以此类推。
import sys, randomn = int(sys.argv[1])for i in range(n):print(random.randrange(0,100))C:\Users\wy>python C:\Users\wy\Desktop\2017Python课程\ch06\randomseq.py 1086【例6.1】命令行参数示例33338419545672669C:\Users\wy>5命令行参数——argparse 模块•argparse 模块是用于解析命名的命令行参数,生成帮助信息的Python 标准模块。
【例6.2】命令行参数解析数示例import argparseparser = argparse.ArgumentParser()parser.add_argument('--length', default=10, type=int, help='长度')parser.add_argument('--width', default=5, type=int, help='长度')args = parser.parse_args()area = args.length * args.width print('面积=', area)面积= 50>>>Python内置的输入函数input和输出函数print,格式为:input([prompt])print(value,…,sep= ‘’,end = ‘\n’,file = sys.stdout,flush = False)•print函数用于打印一行内容,即将多个以分隔符(sep,默认为空格)分隔的值(value,...,以逗号分隔的值),写入到指定文件流(file,默认为控制台sys.stdout)。
参数end指定换行符;flush指定是否强制写入到流。
【例6.3】输入函数和输出函数示例1【例6.4】输入函数和输出函数示例2print(1,2,3)print(1,2,3,sep=',')print(1,2,3,sep=',',end='.\n')for i in range(5):print(i, end=' ‘)========= RESTART:C:\Users\wy\Desktop\2017Python课程\ch06\io_test1.py =========1 2 31,2,31,2,3.0 1 2 3 4>>> import datetimesName = input("请输入您的姓名:")birthyear = int(input("请输入您的出生年份:"))#把输入值通过int转换为整型age = datetime.date.today().year -birthyearprint("您好!{0}。
您{1}岁。
".format(sName, age)) ==== RESTART: C:\Users\wy\Desktop\2017Python 课程\Pythonpa\ch06\io_test2.py ====请输入您的姓名:张三请输入您的出生年份:1996您好!张三。
您21岁。
>>>8标准输入和输出函数——交互式用户输入【例6.5】交互式用户输入示例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)) #列表中各元素求平均值=========== RESTART: C:\Users\wy\Desktop\2017Python课程\ch06\stat.py ===========请输入一个实数,输入-1终止:1.5请输入一个实数,输入-1终止:2.8请输入一个实数,输入-1终止:4.6请输入一个实数,输入-1终止:3.9请输入一个实数,输入-1终止:34.334请输入一个实数,输入-1终止:-1计数:5求和:47.134平均值:9.4268>>>9标准输入和输出函数——运行时提示输入密码【例6.6】交互式用户输入示例•可以使用getpass 模块,在程序运行时提示用户输入密码,保证用户输入的密码在控制台中不回显。
•getpass.getpass (prompt=‘Password:’,stream=None)•getpass.getuser()import getpassusername = input("用户名:") #提示输入用户名passwd = getpass.getpass("密码:") #提示输入密码if username == 'jianghong' and passwd == 'password':#实际运用中,需要与数据库中的账户信息比较print('登录成功')else:print('登录失败’)========= RESTART: C:\Users\wy\Desktop\2017Python 课程\ch06\getpass1.py =========用户名:123456Warning (from warnings module):File "C:\Users\wy\AppData\Local\Programs\Python\Python37\lib\getpass.py", line 100return fallback_getpass(prompt, stream)GetPassWarning: Can not control echo on the terminal.Warning: Password input may be echoed.密码:登录失败>>>10文件和文件对象——open函数内置函数open()用于打开或创建文件对象,其语法格式如:f = open(file,mode = ‘r’,buffering = -1,encoding = None)•使用open()函数时,可以指定打开文件的模式mode为:'r'(只读)、'w'(写入,写入前删除旧内容)、'x'(创建新文件,如果文件存在,则导致FileExistsError)、'a'(追加)、'b'(二进制文件)、't'(文本文件,默认值)、'+'(更新,读写)•通过内置函数open()可创建或打开或创建文件对象;通过文件对象的实例方法write/writelines可以写入字符串到文本文件;通过文件对象的实例方法read/readline,可以读取文本文件的内容;文件读写完成后,应该使用close方法关闭文件【例6.7】读取并输出文本文件示例import sysfilename = sys.argv[0] #所读取并输出的就是本程序文件type_file.py f=open(filename, 'r', encoding='utf-8') #打开文件line_no=0 #统计行号while True:line_no += 1 #行号计数line = f.readline() #读取行信息if line:print(line_no, ":", line) #输出行号和该行内容else:breakf.close() #关闭打开的文件【例6.7】读取并输出文本文件示例======== RESTART: C:\Users\wy\Desktop\2017Python课程\ch06\type_file.py ========1 : import sys2 : filename = sys.argv[0] #所读取并输出的就是本程序文件type_file.py3 : f=open(filename, 'r', encoding='utf-8') #打开文件4 : line_no=0 #统计行号5 : while True:6 : line_no += 1 #行号计数7 : line = f.readline() #读取行信息8 : if line:9 : print(line_no, ":", line) #输出行号和该行内容10 : else:11 : break12 : f.close() #关闭打开的文件13 :>>>•实现上下文管理协议的对象with context [as var]•文件对象支持使用with语句,确保打开的文件自动关闭with open(file,mode) as f:【例6.8】利用with语句读取并输出文本示例import sysfilename = sys.argv[0] #所读取并输出的就是本程序文件type_file_with.pyline_no=0 #统计行号with open(filename, 'r', encoding='utf8') as f: #使用with语句实现上下文管理协议for line in f:line_no+= 1 #行号计数print(line_no, ":", line) #输出行号和该行内容f.close()====== RESTART: C:\Users\wy\Desktop\2017Python 课程\ch06\type_file_with.py ======1 : import sys 2 : filename = sys.argv[0] #所读取并输出的就是本程序文件type_file_with.py 3 : line_no=0 #统计行号4 : with open(filename, 'r', encoding='utf8') as f: #使用with 语句实现上下文管理协议5 : for line in f:6 : line_no += 1 #行号计数7 : print(line_no, ":", line) #输出行号和该行内容8 : f.close()9 :>>>【例6.8】利用with 语句读取并输出文本示例•在程序启动时,Python自动创建并打开三个文件流对象:标准输入流文件对象、标准输出流文件对象和错误输出流文件对象。