zoukankan      html  css  js  c++  java
  • python基础(八)

     今日内容概要:

    一、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)
    #   表示换行,其实蕴含了
    
    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='rb') 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
    2222
    333
    ")
    
        lines=["1111
    ","222
    ","333
    "]
    #原始方法:
        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(r'b.txt', mode='wt', encoding='utf-8') as f:
        # print(f.name) # 获取的是文件的路径
        f.write('哈哈哈
    ')#操作系统IO行为,攒一波,再发送
        # f.flush()#类似于快递急件,有一个发一个
  • 相关阅读:
    关于主板集成声卡
    Sql Server 關於獲取數據庫名,表名及字段名的幾個語句。
    RadioButtonList控制表格显示
    动态網頁及程序生成解决方案
    正則表達式在不同環境中的使用方法
    SQL語句優化
    網頁打印如果設置邊線不顯示
    项目相关技术总结
    [转]DOS命令
    电影记录
  • 原文地址:https://www.cnblogs.com/guojieying/p/13092640.html
Copyright © 2011-2022 走看看