文件操作
+模式: r+t w+t a+t r+b w+b a+b
可读可写,其他功能与人,r,w,a相同
f.seek(offset,whence) 文件指针移动 offest的单位为bytes whence是参照物
f.seek(3,0) whence默认值为0 0:文件开头开始 1:当前指针位置 2:参照末尾
强调:其中whence = 1 和 whence = 2 只能在b模式下使用,除非offest =0 是都可以
f.seek(-2,2)当whence = 2 时,offset需要用负数表示
f.tell()每次统计都是从文件开头到当前指针所在位置
注:只有在t模式下的read(n),n才代表字符的个数,除此之外其他但凡涉及到文件指针的都已bytes为单位
f.truncate(9) 固定参照文件开头,9代表9bytes
修改文件:
方法一:先将原文件内容一次性读入内存,在内存修改完成后覆盖写回原文件
缺点:文件过大的情况下会占用过多的内存空间
优点:修改期间文件内容始终只有一份
with open('a.txt') as read_f: data=read_f.read() data=data.replace('alex','SB') with open('a.txt') as write_f: write_f.write(data)
方法二:以读的方式打开原文件,写的方式打开新文件,从原文件中循环读取每一行内容, 修改后写入新文件,然后删除原文件,把新文件名命名为原来的文件名
缺点:修改期间文件内容有两份
优点:内存中同一时间只有一行内容
import os with open('a.txt') as read_f,open('.a.txt.swap','w') as write_f: for line in read_f: line=line.replace('alex','SB') write_f.write(line) os.remove('a.txt') os.rename('.a.txt.swap','a.txt')
函数的应用
1.什么是函数?
在程序中,函数就是具备某一功能的工具,函数的使用必须遵循先定义,后调用的原则
2.为何使用函数?
不用函数的问题:
①.程序冗长
②.扩展性差
③.可读性差
3.如何使用:先定义后使用
def 函数名(参数,参数……):
‘’’
功能描述
参数描述
return:返回值描述
‘’’
代码块
return 返回值
4.定义:
没有定义而直接引用的函数名,相当于引用一个不存在的变量名
①函数的定义阶段:不执行函数体代码,但会检测函数体的语法
②调用阶段:执行函数体代码
参数:函数体接收外部值的一个媒介
函数定义的三种形式:
1.无参数函数:在定义阶段,括号内没有参数
注意:定义时无参,意味着调用时也无需传入参数
应用:如果函数体代码逻辑不需要外部传参值时,用无参数函数
2.有参数函数:在函数定义时,括号内有参数
注意:定义时有参,意味着调用时也需要传参
应用:如果函数体代码逻辑需要外部传参值时,需要有参数函数
3.空函数:
def func():
pass
用于结构的构建,先搭好结构,后期再填代码