学习记录_Python文件操作

学习记录
日期:2021年9月8日

Python文件操作

文件写入

文件操作
打开文件 open
默认的编码是utf-8 这个是中文编码,最好的习惯就是
在打开一个文件的时候,给它指定一个编码类型

# fobj = open('./Test.txt','w',encoding='UTF-8')
# # 开始操作 读/写操作
# fobj.write('在苍茫的大海上')
# fobj.write('狂风卷积着乌云')
# fobj.close()

# 以二进制的形式去写数据
# fobj = open('Test_1.txt','wb') #str-->bytes
# fobj.write('在乌云和大海之间'.encode('utf-8'))
# fobj.close()
fobj = open('Test.txt','a') # a 用于追加数据
fobj.write('在苍茫的大海上\n')
fobj.write('狂风卷积着乌云\n')
fobj.write('在乌云和大海之间\n')
fobj.write('海燕像黑色的闪电\n')
fobj.write('今天我诗性大发\n')
fobj.write('感觉咋样呢\n')
fobj.close()

文件读取

#f = open('Test.txt','r') #正常只读
#print(f.read()) #读取所有的数据
# print(f.read(12)) #读取12个字符
# print(f.read())
#print(f.readline()) # 读取一行数据
# print(f.readlines())# 读取全部行,返回一个列表
f = open('Test.txt','rb')
data = f.read() #
print(data)
print(data.decode('utf-8'))
f.close() #关闭文件对象

with上下文管理

With的使用,上下文管理对象
优点:自动释放打开关联的对象

with open('Test.txt','r') as f:  # 读
    print(f.read())

with open('Test.txt','a') as f1:  # 写
    f1.write('我觉得python非常的好学习\n')

读写小结

‘’’
小结:
文件读写的几种操作的方式:
read:
r r+ 只读 使用普通读取场景
rb rb+ 适用于 文件 图片 视频 音频 这样的文件读取
write:
w w+ wb wb+ 每次都会创建文件,二进制读写的时候注意编码问题 默认情况下是UTF-8
a a+ ab 在原有文件基础上去追加(文件指针的末尾),并不会每次创建新文件
‘’’

文件备份

小文件和大文件

#文件备份
def copyFile():
    #接收用户输入的文件名
    old_file = input('请输入要备份的文件名:')
    file_list = old_file.split('.')
    #构造新的文件名.加上备份的后缀
    new_file = file_list[0] + '_备份.'+file_list[1]
    old_f = open(old_file,'r') #打开需要备份的文件
    new_f = open(new_file,'w') #以写的模式去打开新文件,不存在则创建
    content = old_f.read() #将文件内容读取出来
    new_f.write(content) #将内容写入到备份文件当中
    old_f.close()
    new_f.close()
    pass

copyFile()

def copyBigFile():
    #接收用户输入的文件名
    old_file = input('请输入要备份的文件名:')
    file_list = old_file.split('.')
    #构造新的文件名.加上备份的后缀
    new_file = file_list[0] + '_备份.'+file_list[1]
    try:
        # 监视要处理的逻辑
        with open(old_file,'r') as old_f,open(new_file,'w') as new_f:
            while True:
                content = old_f.read(1024) #一次读取1024字符
                new_f.write(content)
                if len(content) < 1024:
                    break
    except Exception as msg:
        print(msg)

文件定位

tell()

# tell 返回指针当前所在的位置
with open('Test.txt','r') as f:
    print(f.read(3))
    print(f.tell())
    print(f.read(2))
    print(f.tell())

truncate()

# truncate()可以对源文件进行截取操作
fobjB = open('Test.txt','r')
print(fobjB.read())
fobjB.close()
print('截取之后的数据----')

fobjA = open('Test.txt','r+')
fobjA.truncate(15) #保留前15个字节的字符
print(fobjA.read())
fobjA.close()

seek()

# seek 可以控制光标所在的位置
with open('Test_备份.txt','rb') as f:
    f.seek(4,0) #光标从0的位置开始向前(右)移动 4个字节
    data = f.read(3)
    print(data)
    f.seek(-3,1) #相当于光标设置到了0的位置
    print(f.read(6))
    f.seek(-9,2) #表示光标在末尾处,往回移动了6个字节
    print(f.read(6))

# 对于这种情况 用'r'这种模式打开文件,在文本文件中,
# 没有使用二进制的选项打开文件,只允许从文件的开头计算相对位置,
# 从文件尾部计算或者当前计算就会引发异常
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

潘嗨嗨

感谢你的打赏,我会继续努力的

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值