python知识⼼得09⽂件操作今⽇内容回顾
⽂件处理
⽂件的处理的基本步骤
"""
1、什么是⽂件
⽂件是操作系统提供给⽤户或者说应⽤程序操作硬盘的⼀种功能
2、为何要⽤⽂件
读写⽂件就是在读写硬盘:我们对⽂件的读写操作都会被操作系统转换成硬盘的读写操作
应⽤程序-------------》⽂件对象、⽂件句柄
操作系统-------------》⽂件
硬件-----------------》硬盘
3、如何⽤⽂件
"""
# 打开⽂件,若⽂件不存在,直接报错,
#          若⽂件存在,可以读取⽂件内容
# f = open(', mode='rt', encoding='utf-8')
# print(f)  # ⽂件对象、⽂件句柄 #<_io.TextIOWrapper name='a.txt' mode='rt' encoding='utf-8'> # res = f.read()
# print(res)  #读取a.txt的内容
# f.close()  #关闭⽂件
# print(f)  #<_io.TextIOWrapper name='a.txt' mode='rt' encoding='utf-8'>
# f.read()
# del f  # 删除变量名f 正常情况下不需要删除
# 可以打开多个⽂件
# with open(', mode='rt', encoding='utf-8') as f,\
#        open('b.txt',mode='wt',encoding='utf-8') as f1:
#    pass
⽂件打开模式
# 1、控制⽂件读写操作的模式
# r(默认)
# w
python怎么读取文件中的数据# a
# 2、控制⽂件读写内容的模式
# t(默认的):读写都是以字符串为单位的,只适⽤于⽂件⽂件,必须指定encoding参数
# b:读写都是以bytes为单位的,适⽤于所有⽂件,⼀定不能指定encoding参数
# r模式:只读模式,如果⽂件不存在则报错,⽂件存在则⽂件指针处于⽂件开头
# f = open('a.txt',mode='rt',encoding='utf-8')
# # ad())  # 显⽰⽂件内容,显⽰所有a.txt信息,且光标移动到最后
# # print('='*50) # 分隔符号
# # ad())  # 从上⾯光标位置开始读取内容,显⽰内容为空
# adable())  # True
# print(f.writable())  # False
# f.close()  # 关闭
# w模式:只写模式,如果⽂件不存在则创建空⽂档,⽂件存在则清空,⽂件指针处于⽂件开头
# 简单记忆:w模式下每次都是新建⽂件将之前的原⽂件覆盖,必须要备份以免数据丢失
# f = open('a.txt',mode='wt',encoding='utf-8')
# # f.write("你好\n")
# # f.write("哈哈哈\n")
# # f.write("勒\n")
#
# f.write("你好\n哈哈哈\n勒\n")  # 覆盖a.txt⽂件,显⽰上述内容
# # adable())  #False
# # print(f.writable())  #True
#
# f.close()  #关闭
# 总结:w模式,在打开了⽂件不关的情况下,连续的write写⼊,新写的内容永远跟在后⾯
# a模式:只追加写模式,如果⽂件不存在则创建空⽂档,⽂件存在不会清空,⽂件指针处于⽂件末尾# f = open('c.txt',mode='at',encoding='utf-8')
# # f.write("4444\n")
# # f.write("555\n")
# # f.write("6666\n")  # a模式永远写在后⾯
# adable())  # False
# print(f.writable())  #True
# f.close()  #关闭
# 总结:a模式,在打开了⽂件不关的情况下,连续的write写⼊,新写的内容永远跟在后⾯,这⼀点与w模式相同#    不同的是,在打开了⽂件关闭然后重新打开的情况下,a模式永远写在后⾯
# b模式:读写都是以bytes为单位的,适⽤于所有⽂件,⼀定不能指定encoding参数
# with open('1.mp4',mode='rb') as f:  # 视频格式
#    res = f.read()
#    print(res.decode('utf-8'))  # 报错不能解码
# with open('a.txt',mode='rb') as f:  # ⽂本⽂件
#    res = f.read()
#    print(res.decode('utf-8'))  # ⽂本⽂件可以解码读取内容
# with open('a.txt',mode='ab') as f:
#    f.write("啊⼿动阀⼿动阀".encode('utf-8'))  # 直接在⽂件最后追加
# 例:⽂件拷贝功能
# # ⽅案⼀: #整体复制,缺陷:
# with open('1.mp4',mode='rb') as f1,open(r'D:\1111111.mp4',mode='wb') as f2:
#    res = f1.read()
#    f2.write(res)
#    f2.ad)  #复制⽂件⾄指定位置
# ⽅案⼆:
# 储备知识: #
# with open('a.txt',mode='rt',encoding='utf-8') as f:
#    # f.read()
#    for line in f:
#        print(line,end='') # end''可以删除\n 不加的话每⾏之间会有空格
# with open('1.mp4',mode='rb') as f:
#    for line in f:
#        print(line)  # 解码后跳出⼆进制码
# 具体实现:
# with open('1.mp4',mode='rb') as f1,open(r'D:\1111111.mp4',mode='wb') as f2:
#    for line in f1:  # 将1.mp4转码后进⾏分⾏复制
#        f2.write(line)  # 将分⾏后逐条内容复制到f2指定的位置
# 可读可写  # 如下命令不怎么使⽤
# r+t
# w+t
# a+t
#
# r+b
# w+b
# a+b
# with open('a.txt',mode='r+t',encoding='utf-8') as f:
#    adable())  # True
#    print(f.writable())  # True
#    ad())
#    f.write("22222222222222222222\n")  # 在⽂件最后添加新增的内容
# with open('a.txt',mode='w+t',encoding='utf-8') as f:
#    adable())  # True
#    print(f.writable())  # True
⽂件操作的其他⽅法
# readline :任意str格式
# readlines:将⽂件所有信息按照⾏,⽣成列表形式
# with open('a.txt',mode='rt',encoding='utf-8') as f:
#    # lines = f.readlines() #
#    # print(lines)
#
#    adline())  # a.txt⽂件第⼀⾏
#    adline())  # a.txt⽂件第⼆⾏
# with open('a.txt',mode='wt',encoding='utf-8') as f:
#    # f.write("111\n222\n333\n")  #新建⽂件覆盖内容
#
#    # lines = ['111\n','222\n','3333\n']
#    # for line in lines:
#    #    f.write(line)  # 列表中的值对应分⾏显⽰在a.txt⽂件中
#
#    # f.writelines(lines)  # 在⽂件最后新增lines信息
#
#    f.write('hello')  #新建⽂件覆盖原⽂件内容
#    f.flush()  #刷新
#    # f.writelines('hello')  # 在⽂件最后新增lines信息
#
控制⽂件指针移动
# ⼤前提:只有t模式下的,f.read(n)中的n代表的是字符个数,除此以外,关于指针的移动,单位都是字节bytes # a.txt:hello你好
# t模式情况:字符
# with open('a.txt',mode='rt',encoding='utf-8') as f:
#    res = f.read(6)  # hello你
#    print(res)  # hello你
# b模式:字节
# with open('a.txt',mode='rb') as f:
#    # res = f.read(6)  #报错显⽰“你” 的1/3字节⽆法解码
#    res = f.read(8)
#    print(res.decode('utf-8'))  #hello你
# f.truncate() #打断
# with open('a.txt',mode='r+t',encoding='utf-8') as f:
#    f.truncate(3)  #hel 之后的清除
# f.seek移动的全都是字节个数
f.seek(字节个数,0)  # 设置原位
f.seek(字节个数,1)  # 设置光标移动到什么位置,再从什么位置开始
f.seek(字节个数,2)  # 设置光标在末尾

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。