一、文件操作
- 打开文件函数:open()
参数说明:
open(name[, mode[, buffering]])
open中mode的参数说明:
r 以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式。
rb 以二进制格式打开一个文件用于只读。文件指针将会放在文件的开头。这是默认模式。
r+ 打开一个文件用于读写。文件指针将会放在文件的开头。
rb+ 以二进制格式打开一个文件用于读写。文件指针将会放在文件的开头。
w 打开一个文件只用于写入。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
wb 以二进制格式打开一个文件只用于写入。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
w+ 打开一个文件用于读写。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
wb+ 以二进制格式打开一个文件用于读写。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
a 打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
ab 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
a+ 打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。
ab+ 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。如果该文件不存在,创建新文件用于读写。
- 文件对象常用的操作方法:
read():读取文件,返回字符串
write(): 把字符串写入文件,只接受字符串类型参数
readline():每次读取一行,返回该行的字符串
readlines():读取全部的文件内容,返回list,每一行是一个元素
name():返回文件名字
fileno():文件描述符
close():关闭文件
closed():判断文件是否关闭,返回布尔类型
encoding():设置文件编码格式
truncate
示例1:往一个文件中写入内容
fw = open("2.txt", "w", encoding='utf-8') fw.write('adfjhj\n你好啊') fw.close()
示例2:读取一个文件并打印出内容
#使用codecs防止乱码 f=codecs.open('2.txt') #使用read读取文件 txt=f.read() print(type(f)) print(txt) #使用close关闭 f.close()
示例三:循环打印一个文件内容,并显示每行行号
fr = codecs.open('2.txt', 'rb') #enumerate函数,讲一个可迭代对象加入索引(行号) for i, line in enumerate(fr.readlines()): print("第{0}行内容为:{1}".format(i, line))
- 使用with open打开文件可以不用close
with open('test.txt', 'r') as fd: f = fd.read()
二、Python函数
- 函数的定义
函数的格式:
def关键字开头,+ 函数名+ (参数):
def name(args): pass
函数中的关键字:
return关键字 代表函数执行完返回的值
pass 什么都不干
exit(num) 强行退出
- 为什么要使用函数
- 降低编程难度:通常将一个复杂的问题分解成一系列的小问题,然后将小问题划分成更小的问题,当问题划分的足够细的时候,我们就可以分而治之。各个小问题解决了,大问题就迎刃而解了。
- 代码重用:避免重复操作,提高效率
- 函数的参数
函数分为形式参数和实际参数:
在定义函数时,函数名后面括号中的变量名称叫做“形式参数”也叫型参
在函数调用时,函数后面括号中的参数叫做实参
示例:
#函数后面的s表示是形参 def cf(s): return s * 5 # 调用时的3表示是实参 cf(3)
- 多类型参数
一般情况下python函数形参和实参的数量要一致。但是当实参为序列数据类型时,我们可以将多个实参传递到形参中。 我们可以在实参列表中以 * 或者 ** 标识符来限制传入的实参必须为 Tuple/List 或 Dict 的类型对象。
def fun(x,y): print(x+y)
当我们调用fun函数时,只用传入x和y两个值就可以了,但当我们想传入一个元组时t=(1,2)。这样fun(t)调用时不行的,我们需要使用*t来进行传值。但元组t中的元素个数要小于函数中定义的形参。
示例:
元组:
def fun(x, y, z): print(x + y + z) fun(1, *t)
字典:
d = {'x':1,'y':2,'z':3} def fun(x,y,z): print(x+y+z) fun(**d)
- 匿名函数
lambda 函数是一种快速定义单行的最小函数,可以用在任何需要函数的地方。
匿名函数的有点:
使用lambda可以省去定义函数的过程,让代码更加精简。
对于一些抽象的,不会被别的地方再重复使用的函数,使用lambda不需要考虑命名的问题
使用lambda使代码更容易理解