首页 > 编程语言 > 详细

python基础(八)

时间:2020-06-11 18:47:15      阅读:41      评论:0      收藏:0      [点我收藏+]

 今日内容概要:

一、with上下文管理(重点)

二、b模式(重点)

三、+模式(了解)

四、文件操作其他方法(重点)

内容详解:

一、with上下文管理

程序运行完成后,必须要有f.close()来关闭文件
# f = open(r"文件路径", mode="rt", encoding="utf-8")
# data = f.read(内容)  # f.write(内容)
# f.close()

使用with,程序运行完成后会自动调用f1.close()回收操作系统,关闭文件
# with open(‘今日内容.txt‘,mode=‘rt‘,encoding=‘utf-8‘) as f1:
#     data = f1.read()
#     print(data)
#   \表示换行,其实蕴含了\n
with open(今日内容.txt, mode=rt, encoding=utf-8) as f1,         open(a.txt, mode=rt, encoding=utf-8) as f2:
    print(文件1的内容.center(50, #))
    data = f1.read()
    print(data)

    print(文件2的内容.center(50, #))
    data = f2.read()
    print(data)

    # 自动调用f1.close()、f2.close()回收操作系统

二、b模式

 1、字符编码解码的知识

# user = input(‘>>: ‘)  # user="林海峰"
user = "林海峰"

# 编码操作:
# 字符串===utf-8===》bytes
res=user.encode("utf-8")#encode 编码
print(res)
print(type(res))

# 基于网络发送数据(res)

# 解码操作:
# bytes====》utf-8=====》字符串
print(res.decode("utf-8"))#decode 解码

2、bytes

with open(a.txt,mode=rt) as f:
    data=f.read()
    print(data)
    print(type(data))

3、t 模式只能用于读文本文件

with open(a.jpg,mode=rt,encoding=utf-8) as f:
    data=f.read()
    print(data)
    print(type(data))

# 图片<---------jpg-------二进制数
# 字符<---------utf-8-------二进制数

4、b模式能用于读所有的文件

with open(a.jpg,mode=rb) as f:
    data=f.read()
    print(data)#打印出b‘.....
    print(type(data))#<class ‘bytes‘>


with open(a.jpg, mode=rb) as f:
    data = f.read()
    print(data.decode("utf-8"))#报错
print(type(data))#报错

5、 b模式,运行结果为:二进制数

       t模式是帮我们解码了     # 字符<---------utf-8-------二进制数

# with open(‘a.jpg‘, mode=‘rb‘) as src_f, \
#         open(‘b.jpg‘, mode=‘wb‘) as dst_f:
#     # data = src_f.read()
#     # dst_f.write(data)
#
#     for line in src_f: # line=文件中的2行内容
#         dst_f.write(line)


# with open(‘b.txt‘, mode=‘wb‘) as f:
#     user = "林海峰"
#     res=user.encode(‘utf-8‘)
#     f.write(res)


with open(b.txt, mode=wt, encoding="utf-8") as f:
    user = "林海峰"
    f.write(user)

三、+模式

可读可写模式,可以省略t,默认就是t模式,读写都是以字符串为单位
r+t
w+t
a+t

可读可写模式,b模式下读写都是以bytes二进制为单位
r+b
w+b
a+b
with open(b.txt,mode=r+t,encoding=utf-8) as f:
    print(f.read())
    f.write("abcdefg")


with open(b.txt,mode=w+t,encoding=utf-8) as f:
    f.write("我爱你中国")
    print(f.read())


with open(b.txt,mode=a+t,encoding=utf-8) as f:
    f.write("我爱你中国")
    print(f.read())

四、文件操作其他方法

 1、readline

with open(b.txt, mode=rt, encoding=utf-8) as f:
    line1=f.readline()#读出第一行
    line2=f.readline()#读出第二行
    line3=f.readline()
    line4=f.readline()
    print(line1,end="")#读出第一行
    print(line2,end="")#读出第二行
    print(line3,end="")
    print(line4,end="")
原始方法: 
 l = []
     for line in f:
         l.append(line)
简便方法:
     l = f.readlines()
     print(l)

2、writelines

# with open(‘b.txt‘, mode=‘wt‘, encoding=‘utf-8‘) as f:
#     f.write("1111\n2222\n333\n")

    lines=["1111\n","222\n","333\n"]
#原始方法:
    for line in lines:
        f.write(line)
#简单方法:
    f.writelines(lines)

    f.writelines({k1:111,k2:222,"k3":3333})#k1k2k3
    f.writelines({k1:111,1:44444,k2:222,"k3":3333}) # 报错

    f.writelines("hello")#for 循环依次取出  h e l l o
    f.write("hello")#直接写出hello

3、flush刷新

with open(rb.txt, mode=wt, encoding=utf-8) as f:
    # print(f.name) # 获取的是文件的路径
    f.write(哈哈哈\n)#操作系统IO行为,攒一波,再发送
    # f.flush()#类似于快递急件,有一个发一个

 

python基础(八)

原文:https://www.cnblogs.com/guojieying/p/13092640.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!