zoukankan      html  css  js  c++  java
  • 文件的打开方式

    文件的打开方式

    文件操作的基础模式有三种(默认的操作模式为r模式):

    • r模式为read #只读
    • w模式为write #只写,清空文件在写入
    • a模式为append #在后面追加写入文件

    文件读写内容的格式有两种(默认的读写内容为b模式):

    • t模式为text
    • b模式为bytes #b表示,你写的字符串为二进制,在打印的时候不需要使用终端的编码处理,直接打印原生的二进制即可

    需要注意的是:t、b这两种模式均不能单独使用,都需要与r/w/a之一连用。r/w/a能单独使用

    文件打开模式之r模式

    r:read,只读模式,只能读不能写,文件不存在时报错。

    r,r告诉接下来的字符串,里面所有的特殊字符变得无意义

    f=open(r'F:FTP.txt',mode='r',encoding='utf8')  
    # data=f.read()
    # print(data)
    # f.close()
    f.write("QWERTYUIOSDFGHJKZXVBNM")   #清空文件后再写入
    f.close()
    f = open(r'F:FTP.txt',mode='r',encoding='utf8')
    data=f.read()
    print(data)
    
    Traceback (most recent call last):
      File "D:/Program Files/JetBrains/python学习/tday 11/练习.py", line 12, in <module>
        f.write("QWERTYUIOSDFGHJKZXVBNM")
    io.UnsupportedOperation: not writable
    
    f=open(r'F:FTQ.txt',mode='r',encoding='utf8')
    data=f.read()
    print(data)
    f.close()
    
    Traceback (most recent call last):
      File "D:/Program Files/JetBrains/python学习/tday 11/练习.py", line 8, in <module>
        f=open(r'F:FTQ.txt',mode='r',encoding='utf8')
    FileNotFoundError: [Errno 2] No such file or directory: 'F:\FTQ.txt'
    
    #  rt:read by text  把文件以文本形式读取出来
    f=open(r'F:FTP.txt',mode='rt',encoding='utf8')   
    data=f.read()
    print(data)
    print(f'data:{type(data)}')
    f.close()
    
    112345678924567890234678167890112345670987876098765430987654
    data:<class 'str'>    
    
    # rb:read by bytes  以字节形式(二进制)读取出来,因为所有的文件在硬盘中都是以二进制的形式存储的,b模式读写文件,一定不能加上encoding参数,因为二进制无法再编码。
    f=open(r'F:FTP.txt',mode='rb')
    data=f.read()
    print(data)
    print(f'type(data):{type(data)}')
    f.close()
    
    b'xefxbbxbf112345678924567890234678167890112345670987876098765430987654'
    type(data):<class 'bytes'>
    

    f.read()读取文件指针会跑到文件的末端,如果再一次读取 ,读取的将是空格。

    f=open(r'F:FTP.txt',mode='rt',encoding='utf8')
    data1=f.read()
    data2=f.read()
    print(f'data1:{data1}')
    print(f'data2:{data2}')
    f.close()
    
    data1:112345678924567890234678167890112345670987876098765430987654
    data2:
    

    由于f.read()一次性读取文件的所有内容,如果文件非常大的话,可能会造成内存爆掉,即电脑卡死。因此可以使用f.readline()/f.readlines()读取文件内容。

    f=open(r'F:FTP.txt',mode='rt',encoding='utf8')
    print(f'f.readable():{f.readable()}')  #判断文件是否可读
    data1=f.readline()
    data2=f.readlines()
    print(f'data1:{data1}')
    print(f'data2:{data2}')
    f.close()
    
    f.readable():True
    data1:112345678924567890234678167890112345670987876098765430987654
    
    data2:['
    ', '
    ', '
    ', '航空市场黁SVN语言女你有碎是U盘苏怒政府采购吃什么哄你们'] #转义字符,换行作用
    

    文件打开模式之w模式

    w:只能写,不能读,文件存在的时候会清空文件后,再写入内容,文件不存在的时候会创建文件后,再写入文件。

    # wt
    f=open(r'F:FTP.txt',mode='wt',encoding='utf8')
    print(f'f.readable():{f.readable()}')
    f.write('今天是一个美好的日子,可惜不在黑夜,鸟不在鸣叫,交通不在拥堵。
    ')
    f.write('我今天没去金山寺
    ')
    f.write('最初的相遇 最后的别离,期待相遇与别离。')
    f.flush()
    f.close()
    f=open(r'F:FTP.txt',mode='rt',encoding='utf8')
    data=f.read()
    print(data)
    f.flush()
    f.close()
    
    f.readable():False
    今天是一个美好的日子,可惜不在黑夜,鸟不在鸣叫,交通不在拥堵。
    我今天没去金山寺
    最初的相遇 最后的别离,期待相遇与别离。
    
    # wb
    f=open(r'F:FTP.txt',mode='wb')
    f.write('今天是一个美好的日子,可惜不在黑夜,鸟不在鸣叫,交通不在拥堵。
    '.encode('unicode_escape'))            #编码成bytes类型
    f.write('我今天没去金山寺
    '.encode('unicode_escape'))
    f.write('最初的相遇 最后的别离,期待相遇与别离。'.encode('unicode_escape'))
    f.flush()
    f.close()
    f=open(r'F:FTP.txt',mode='rt',encoding='utf8')
    data=f.read()
    print(data)
    f.flush()
    f.close()
    
    u4ecau5929u662fu4e00u4e2au7f8eu597du7684u65e5u5b50uff0cu53efu60dcu4e0du5728u9ed1u591cuff0cu9e1fu4e0du5728u9e23u53ebuff0cu4ea4u901au4e0du5728u62e5u5835u3002
    u6211u4ecau5929u6ca1u53bbu91d1u5c71u5bfa
    u6700u521du7684u76f8u9047 u6700u540eu7684u522bu79bbuff0cu671fu5f85u76f8u9047u4e0eu522bu79bbu3002
    

    文件打开模式之a模式

    a:可以追加。文件存在,则在文件的末端写入内容;文件不存在的时候会创建文件后写入内容。

    f=open(r'F:FTW.txt',mode='at',encoding='utf8')
    f.write('今天是一个美好的日子,可惜不在黑夜,鸟不在鸣叫,交通不在拥堵。
    ')
    f.write('我今天没去金山寺
    ')
    f.write('最初的相遇 最后的别离,期待相遇与别离。
    ')
    f.close()
    f=open(r'F:FTW.txt',mode='rt',encoding='utf8')
    data=f.read()
    print(data)
    f.flush()
    f.close()
    
    今天是一个美好的日子,可惜不在黑夜,鸟不在鸣叫,交通不在拥堵。
    我今天没去金山寺
    最初的相遇 最后的别离,期待相遇与别离。
    今天是一个美好的日子,可惜不在黑夜,鸟不在鸣叫,交通不在拥堵。
    我今天没去金山寺
    最初的相遇 最后的别离,期待相遇与别离。
    
    

    文件打开模式之b模式

    b模式是通用的模式,因为所有的 文件在硬盘中都是以二进制的形式存储的,需要注意的是:b模式读写文件,一定不能加上encoding参数,因为二进制无法再编码。

    Never,Never,Never give up.
  • 相关阅读:
    关于loose.dtd和xhtml1transitional.dtd等文档类型定义模型中CSS失效的解决办法。
    JSON扫盲帖+JSON类教程
    jQuery中Ajax事件
    JQuery绑定事件 时如何传递参数
    xml include 另外一个xml文件
    ubuntu 两张网卡时网络设置
    Letcode 题:pow(x,n)
    Java编程语言中sleep()和yield()的区别
    JProfiler与eclipse集成
    zz 字符串相关
  • 原文地址:https://www.cnblogs.com/zuihoudebieli/p/10940143.html
Copyright © 2011-2022 走看看