open
1、open函数,该函数用于处理文件
2、open("文件名,模式(用什么方式打开),编码")
a、基本的打开方式
# 1、只读,r f = open("ha.log","r") #2、只写,w,[文件不可读;文件不存在则创建;存在则清空内容] f = open("ha.log","w") f.write("123") f.close() #3、x, 只写模式【不可读;不存在则创建,存在则报错】 f = open("ha1.log","x") f.write("456") f.close() #4、追加模式【不可读;不存在则创建;存在则只追加内容;】 f = open("ha1.log","a") f.write("666") f.close()
b、字节的方式打开
#1、只读,rb f = open("ha.log","rb") data = f.read() f.close() print(type(data)) #2、只写 f = open("ha.log","wb") f.write(bytes("中国",encoding="utf-8")) f.close()
c、区别:
#普通打开 #普通打开已经经过内部python操作,直接是UTF-8,rb方式则需要自己转换 #===python内部将101010 => 转换成字符串,通过字符串操作 #010101 => python解释器 => 程序员 #二进制打开方式 #rb方式打开只会得到2进制的代码,需要自己转换成utf-8
d、"+" 表示可以同时读写某个文件
# r+, 读写【可读,可写】 # w+, 写读【可读,可写】 # x+ ,写读【可读,可写】 # a+, 写读【可读,可写】
1、r+
# r,末尾追加,指针移动到最后 f = open("ha.log","r+",encoding="utf-8") #指针为0,起始位置 #f.close()
#从开始向后读
#写,追加,指针调到最后
2、w+,x+
#w+,先清空文件内容,再写之后,就可以读取 #先清空,之后写的才能读,写,指针到最后 f = open("ha.log","w+",encoding="utf-8") f.write("吴文") f.seek(0)#指针指向0 data = f.read() f.close() print(data) #x+基本同上,如果文件存在,则报错
3、a+
a+ a,打开的同时,指针已经到最后了,文件里面的内容读不到 #写时,也会追加,指针放到最后 f = open("ha.log","a+",encoding="utf-8") data = f.read() f.close() print(data)
3、 文件的操作功能
#=============================== # f.tell()#获取指针的位置 # f.seek(num)#调整指针的位置 #=============================== # close 关闭文件 # flush 强制刷新文件内部缓冲区 # read 读取文件 # readline 读取一行 # seek 文件中指针位置 # tell 获取指针的位置 # truncate 截断数据,仅保留指针指定之前数据 # write 读取文件
4、读取每一行的内容
f = open("ha.log","r",encoding="utf-8") for line in f: print(line) =>#f.readline,可以读取所有行的内容
5、with open
#当with代码块执行完毕时,内部会自动关闭并释放文件资源。 with open("ha.log","r") as f: f.read() #python内部会帮你关闭不用写f.close
#同时打开2个文件 with open("log1","r") as boj1, open("log2","r") as obj2: pass #打开2个文件并进行传送数据 with open("源文件","r") as obj1,open("新文件","w") as obj2: for line in obj1: obj2.write(line) #打开一个源文件,同时吧内容写入一个新文件里面
6、lambda表达式
#lambda可以代替简单的函数 def f1(): return 123 f2 = lambda :123 def f3(a1,a2): return a1 + a2 f4 = lambda a1,a2: a1+a2 r1 = f1() print(r1) r2 = f2() print(r2)