Python内置函数之--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)