• 12.文件操作-读-写-增


    文件操作

    一、只读read

    1.打开文件所需要的参数:

    文件路径:绝对路径、相对路径

    编码:utf-8、gbk、gb2312、

    权限模式:只读、只写、追加、读写、

    用Python来读写文件是非常简单的操作,我们使用open()来打开一个文件,获取到文件句柄,然后通过文件句柄就可以进行各种各样的操作了

    根据打开方式的不同能够执行的操作会有相应的差异.

    打开文件的方式:

      r,w,a

      r+,w+,a+

      rb,wb,ab

      r+b,w+b,a+b

    2.路径:

    相对路径:同级目录直接输入文件名,推荐这种方式,方便文件的读取以及程序相关文件的打包

    绝对路径:文件在磁盘中的具体位置,在使用绝对路径时由于无法识别路径中的/符号,路径前要加一个r来转义

    可加在相对路径前:

    ​ ../返回上一级

    ​ ../../返回上一级

    f = open(r'C:Users杨老师Desktopqwer.txt',mode='r',encoding='utf-8')        #文件句柄
    content = f.read()             #全部读取
    print(content)
    f.close()                      #关闭文件
    
    
    f = open(r'C:Users杨老师Desktopqwer.txt',mode='r',encoding='utf-8')        #文件句柄
    content = f.read(6)            #读取前6个字符串 
    print(content)
    f.close()                      #关闭文件
    
    
    f = open(r'C:Users杨老师Desktopqwer.txt',mode='r',encoding='utf-8')        #文件句柄
    content = f.readline()         #读取第一行
    print(content)
    f.close()                      #关闭文件
    

    3.rb模式

    f = open('护士少妇萝莉',mode='rb')
    content = f.read()
    print(content)
    f.close()
    
    结果:
    b'xe6xa0x87xe9xa2x98xe5xbex88xe5xa5xbd'
    

    rb 读出来的数据是bytes类型,在rb模式下,不能encoding字符集

    rb的作用:在读取非文本文件的时候,比如要读取mp3,图像,视频等信息的时候就需要用到rb,因为这种数据是没办法直接显示出来的

    这个字节的模式是用于传输和存储

    二、覆盖写入write

    1.覆盖写

    在写文件的时候我们要养成一个写完文件就刷新的习惯. 刷新flush()

    f = open('../path1/小娃娃.txt',mode='w',encoding='utf-8')
    f.write('太白很白')
    f.flush()
    f.close()
    
    结果:
    当我选择使用w模式的时候,在打开文件的时候就就会把文件中的所有内容都清空,然后在操作
    

    注意点:如果文件不存在使用w模式会创建文件,文件存在w模式是覆盖写,在打开文件时会把文件中所有的内容清空.

    f1 = open('../path1/小娃娃.txt',mode='r',encoding='utf-8')
    msg = f1.read()
    print(msg)
    
    # 这个是先查看小娃娃文件中有哪些内容
    
    
    f = open('../path1/小娃娃.txt',mode='w',encoding='utf-8')
    f.write('太白很白')
    f.flush()
    f.close()
    # 这个是对小娃娃文件进行覆盖写操作
    
    
    f1 = open('../path1/小娃娃.txt',mode='r',encoding='utf-8')
    msg = f1.read()
    print(msg)
    
    # 查看覆盖写后的内容
    

    wb模式下,不可以指定打开文件的编辑,但是写文件的时候必须将字符串转换成utf-8的bytes数据

    f = open('../path1/小娃娃.txt',mode='wb')
    msg = '你好'.encode('utf-8')
    f.write(msg)
    f.flush()  # 刷新
    f.close()
    

    2.追加写

    只要是a或者ab,a+都是在文件的末尾写入,不论光标在任何位置.

    在追加模式下,我们写入的内容后追加在文件的末尾

    a模式如果文件不存在就会创建一个新文件

    f1 = open('../path1/小娃娃.txt',mode='a',encoding='utf-8')
    msg = f1.write('这支烟灭了以后')
    

    三、+模式

    1.读写模式

    对于读写模式,必须是先读后写,因为光标默认在开头位置,当读完了以后再进行写入.我们以后使用频率最高的模式就是r+

    1.1 r+模式

    看下正确的操作:

    f1 = open('../path1/小娃娃.txt',mode='r+',encoding='utf-8')
    msg = f1.read()
    f1.write('这支烟灭了以后')
    f1.flush()
    f1.close()
    print(msg)
    结果:
    正常的读取之后,写在结尾
    

    看下错误的操作:

    f1 = open('../path1/小娃娃.txt',mode='r+',encoding='utf-8')
    f1.write('小鬼')
    msg = f1.read()
    f1.flush()
    f1.close()
    print(msg)
    
    结果:
    这样写会把小鬼写在开头,并且读出来的是小鬼之后的内容
    

    r+模式一定要记住是先读后写

    1.2 r+模式坑

    深坑请注意: 在r+模式下. 如果读取了内容. 不论读取内容多少. 光标显示的是多少. 再写入 或者操作文件的时候都是在结尾进行的操作.

    2.写读模式

    先将所有的内容清空,然后写入.最后读取.但是读取的内容是空的,不常用

    f1 = open('../path1/小娃娃.txt',mode='w+',encoding='utf-8')
    f1.write('小鬼')
    msg = f1.read()
    f1.flush()
    f1.close()
    print(msg)
    

    有人说,先读在写不就行了.w+模式下 其实和w模式一样,把文件清空了,在写的内容.所以很少人用

    追加读(a+,a+b)

    a+模式下,不论是先读还是后读,都是读不到数据的

    f = open('../path1/小娃娃.txt',mode='a+',encoding='utf-8')
    f.write('阿刁')
    f.flush()
    msg = f.read()
    f.close()
    print(msg)
    

    还有几个带b的模式,其实就是对字节的一些操作,就不多叙述了.

  • 相关阅读:
    单例模式
    SRM147 DIV2 950
    SRM147 DIV2 600
    SRM147 DIV2 250
    SRM147 DIV1 1000
    Python 实现字符串反转的9种方法
    ubtuntu redis 集群部署/搭建(官方原始方案)
    Python2 ValueError: chr() arg not in range(256) 解决办法?
    python 字典操作中has_key() 和 in 那个使用更加pythonic?
    Python库 使用filetype精确判断文件类型
  • 原文地址:https://www.cnblogs.com/yangte/p/13532827.html
Copyright © 2020-2023  润新知