【Python】学习笔记总结3(Python文件操作)

喜欢ヅ旅行 2023-02-28 05:54 25阅读 0赞

文章目录

  • 三、Python文件操作
    • 1.打开`open(‘文件名’,’打开模式’)`
    • 2.写操作
    • 3.读操作
    • 4.With上下文管理对象
    • 小结
    • 案例
    • 5.文件定位

三、Python文件操作

1.打开open('文件名','打开模式')

  1. fileA = open('./Test.txt','w',encoding='utf-8')
  • 打开模式

























































打开模式 模式说明
r 以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式。
w 打开一个文件只用于写入。 如果该文件已存在则将其覆盖。如果该文件不存在, 创建新文件。
a 打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
rb 以二进制格式打开-一个文件用于只读。文件指针将会放在文件的开头。这是默认模式。
wb 以二进制格式打开一个文件只用于写入。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
ab 以二进制格式打开-一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
r+ 打开一个文件用于读写。文件指针将会放在文件的开头。
w+ 打开一个文件用于读写。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
a+ 打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。
rb+ 以二进制格式打开-一个文件用于读写。文件指针将会放在文件的开头。
wb+ 以二进制格式打开-一个文件用于读写。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
ab+ 以二进制格式打开-一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。如果该文件不存在,创建新文件用于读写。

2.写操作

  • 字符串形式,默认gbk编码

    fileA = open(‘./Test.txt’,’w’,encoding=’utf-8’)
    fileA.write(‘写入的内容’)
    fileA.close()

  • 二进制形式写入

    fileA = open(‘./Test2.txt’,’wb’)
    fileA.write(‘写入的内容’.encode(‘utf-8’))
    fileA.close()

  • 追加写入a

    fileA = open(‘./Test.txt’,’a’)
    fileA.write(‘写入的内容’)
    fileA.close()

  • 追加写入ab

    fileA = open(‘./Test.txt’,’ab’)
    fileA.write(‘写入的内容’.encode(‘utf-8’))
    fileA.close()

3.读操作

  • 读取所有

    fileA = open(‘./Test.txt’,’r’,encoding=’utf-8’)
    print(fileA.read())
    fileA.close()

  • 读取几个

    fileA = open(‘./Test.txt’,’r’,encoding=’utf-8’)
    print(fileA.read(4))
    fileA.close()

  • 读一行

    fileA = open(‘./Test.txt’,’r’,encoding=’utf-8’)
    print(fileA.readline())
    fileA.close()

  • 读所有行

    fileA = open(‘./Test.txt’,’r’,encoding=’utf-8’)
    print(fileA.readlines())
    fileA.close()

  • 读取二进制

    fileA = open(‘./Test.txt’,’rb’)
    data = fileA.read()
    print(data)
    print(data.decode(‘utf-8’))
    fileA.close()

4.With上下文管理对象

自动释放打开关联对象

  1. with open('./Test.txt','rb') as fileA :
  2. data = fileA.read()
  3. print(data)
  4. print(data.decode('utf-8'))
  5. #自动释放

小结

文件读写的几种操作方式
read r r+ rb rb+
r r+ 只读使用普通读取场景
rb rb+ 适用于文件图片视频音频这样文件读取
write WW+ wb+
w ba ab w wb+ W+每次都会去创建文件
二进制读写的时候要注意编码问题,默认情况下我们写入文件的编码是gbk
a ab a+ 在原有的文件的基础之后去[文件指针的末尾]去追加,并不会每次的都去创建一个新的文件

案例

  1. old_file = input('请输入 要备份的文件名:')
  2. file_list=old_file.split('.')
  3. #构造新的文件名.加上备份的后缀
  4. new_file=file_list[0]+'_ 备份. '+file_list[1]
  5. try:
  6. #监视啊哟处理的逻辑
  7. with open(old_file,'r') as old_f,open(new_file,'w')as new_f:
  8. while True:
  9. content=old_f.read(1024) #-次读取1024字符
  10. new_f.write( content)
  11. if len( content)<1024:
  12. break
  13. except Exception as msg:
  14. print (msg )
  15. pass

5.文件定位

  • tell() 返回指针当前所在的位置

    with open(‘./Test.txt’,’r’,encoding=’utf-8’) as fileA :

    1. fileA.read(1)
    2. print(fileA.tell())
    3. fileA.read(2)
    4. print(fileA.tell())
  • truncate() 对源文件进行截取操作

    with open(‘./Test.txt’,’r+’) as fileA :

    1. fileA.truncate(2)
    2. print(fileA.read())
  • seek() 更改光标指针位置
    只有二进制模式打开文件才能更改光标指针位置

    fileA.seek(-2,0)#0初始位置开始
    fileA.seek(-2,1)#1当前位置开始
    fileA.seek(-2,2)#2末尾位置开始

    with open(‘./test.txt’,’rb’) as fileA :

    1. data=fileA.read(2)
    2. print(data.decode('gbk'))
    3. fileA.seek(-2,1)#当前位置向前移动2
    4. ok = fileA.read(2)
    5. print(ok.decode('gbk'))

发表评论

表情:
评论列表 (有 0 条评论,25人围观)

还没有评论,来说两句吧...

相关阅读