其他复习资料
目录
一、思维导图
二、输入和输出概述
Python程序通常可以使用下列方式之一实现交互功能:
(1)命令行参数。
(2)标准输入和输出函数。
(3)文件输入和输出。
(4)图形化用户界面
三、命令行参数
通过列表sys.argv访问命令行参数 argv[0]为Python脚本名,argv[1]为第1个参数,argv[2]为第2个参数。
例:命令行参数示例(randomseq.py):生成n个随机数,其中,n由程序的第一个命令行参数所确定。
python
import sys, random
n = int(sys.argv[1])
for i in range(n):
print(random.randrange(0,100))
输出如下:
argparse模块和命令行参数解析
使用argparse模块的基本步骤
python
>>> import argparse //导入模块
>>> parser = argparse.ArgumentParser() //添加parser
>>> parser.add_argument('--length', default=10, type=int, help='长度') //输入
>>> args = parser.parse_args()
示例代码如下:
python
import argparse
parser = argparse.ArgumentParser()
parser.add_argument('--length', default=10, type=int, help='长度')
#如果没有输入值,默认为10,类型为int,名称为--length,注释为长度
parser.add_argument('--width', default=5, type=int, help='宽度')
#如果没有输入值,默认为5,类型为int,名称为--width,注释为宽度
args = parser.parse_args()
area = args.length * args.width
print('面积=', area)
四、标准输入和标准输出函数
代码示例
python
>>> print(1,2,3) #输出时采用默认分隔符(空格)。输出:1 2 3
1 2 3
>>> print(1,2,3,sep=',') #输出时采用逗号(,)分隔符。输出:1,2,3
1 2 3
>>> print(1,2,3,sep=',',end='.\n') #输出时采用逗号分隔符,最后以点结束并换行
1,2,3.
>>> for i in range(5): #输出时使用空格代替换行符
print(i, end=' ')
0 1 2 3 4
python
import datetime
sName = input("请输入您的姓名:") #输入姓名
birthyear = int(input("请输入您的出生年份:")) #输入出生年份
age = datetime.date.today().year - birthyear #根据当前年份和出生年份计算年龄
print("您好!{0}。您{1}岁。".format(sName, age))
五、文件输入和输出
通过内置函数**open()**可创建或打开文件对象
通过文件对象的实例方法write/writelines,可以写入字符串到文本文件
通过文件对象的实例方法read/readline,可以读取文本文件的内容
文件读写完成后,应该使用close方法关闭文件
以下为简单的读取文件中行数的代码:
python
import sys
filename = sys.argv[0] #所读取并输出的就是本程序文件type_file.py
f=open(filename, 'r', encoding='utf8') #打开文件
line_no=0 #统计行号
while True:
line_no += 1 #行号计数
line = f.readline() #读取行信息
if line:
print(line_no, ":", line) #输出行号和该行内容
else:
break
f.close() #关闭打开的文件
六、标准输入、输出和错误流
在Python中,标准输入(Standard Input)、标准输出(Standard Output)和标准错误(Standard Error)是程序与外界交互的三种基本方式,它们分别对应于不同的流(stream):
-
标准输入(stdin):
- 标准输入流用于接收用户输入或从其他程序传递的数据。
- 在Python中,可以通过
sys.stdin
来访问这个流。 - 通常,标准输入是通过键盘输入的,但也可以通过重定向或管道从文件或其他程序获取输入。
-
标准输出(stdout):
- 标准输出流用于发送程序的输出结果到屏幕或其它输出设备。
- 在Python中,可以通过
sys.stdout
来访问这个流。 - 默认情况下,
print()
函数的输出会发送到标准输出。 - 标准输出可以被重定向到文件或其它程序,以便于日志记录或进一步处理。
-
标准错误(stderr):
- 标准错误流用于发送错误信息、警告或诊断信息到屏幕或其它输出设备。
- 在Python中,可以通过
sys.stderr
来访问这个流。 - 与标准输出不同,标准错误通常用于输出错误信息,而不是程序的正常输出。
- 标准错误也可以被重定向,但它的重定向通常与标准输出分开,以便于错误信息可以单独处理。
在命令行中,可以使用以下方式重定向这些流:
- 使用
>
将标准输出重定向到文件,例如:python script.py > output.txt
。 - 使用
2>
将标准错误重定向到文件,例如:python script.py 2> error.log
。 - 使用
2>&1
将标准错误重定向到标准输出,例如:python script.py 2>&1 | tee output.txt
,这会将错误信息也输出到output.txt
文件。
以下为输入流的代码示例:
python
import sys
total = 0.0
count = 0
for line in sys.stdin:
count += 1
total +=float(line)
avg = total / count
print("平均值为:",avg)
运行结果如下:
以下为输出流的代码示例:
python
import sys
n = int(sys.argv[1]) #从命令行第一个参数中获取n的值
power = 1 #2的0~n次幂赋初值
i = 0 #计数赋初值
f = open('out.log', 'w') #指定标准输出重定向到文件out.log中
sys.stdout = f
while i <= n:
print(str(i), ' ', str(power)) #输出0~n以及2的0~n次幂的列表
power = 2 * power #计算2的0~n次幂
i = i + 1 #计数加1
sys.stdout = sys.__stdout__
print('done!')
输出结果如下:
七、重定向和管道
在Python中,重定向(Redirection)和管道(Piping)是两种用于控制程序输入和输出流的机制,它们在命令行界面(CLI)中特别有用。虽然Python脚本本身不直接处理重定向和管道,但它们可以在命令行中与Python脚本一起使用。下面是这两个概念的详细解释:
1.重定向(Redirection)
重定向是一种将命令的输出或输入从一个位置转移到另一个位置的方法。在Python脚本的上下文中,这意味着你可以将脚本的输出(或错误)发送到文件,或者从文件中读取输入。重定向使用以下符号:
>
:将输出重定向到文件,如果文件已存在,则覆盖文件内容。>>
:将输出追加到文件末尾,而不是覆盖文件。<
:将输入从文件读取,而不是从标准输入(通常是键盘)读取。2>
:将错误输出重定向到文件。2>>
:将错误输出追加到文件末尾。&>
:将标准输出和错误输出都重定向到同一个文件。
代码示例一如下:(程序到文件)
python
命令行命令:python randomseq.py 10 > scores.txt
命令行命令: type scores.txt
代码示例二如下:(文件到程序)
python
python average.py < scores.txt
重定向文件到标准输入的示意图 如下:
2.管道(Piping)
管道是一种将一个命令的输出作为另一个命令输入的方法。在Python脚本中,你可以使用管道将一个脚本的输出传递给另一个脚本或程序作为输入。管道使用竖线符号 |
。
例如:
c:\pythonpa\ch06> python randomseq.py 1000 | python average.py
其执行结果等同于下列两行执行命令:
c:\pythonpa\ch06> python randomseq.py 1000 > scores.txt
c:\pythonpa\ch06> python average.py < scores.txt