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)