菜单 学习猿地 - LMONKEY

VIP

开通学习猿地VIP

尊享10项VIP特权 持续新增

知识通关挑战

打卡带练!告别无效练习

接私单赚外块

VIP优先接,累计金额超百万

学习猿地私房课免费学

大厂实战课仅对VIP开放

你的一对一导师

每月可免费咨询大牛30次

领取更多软件工程师实用特权

入驻
309
0

2021.6.8

原创
05/13 14:22
阅读数 45590
一、文件处理
1、什么是文件
文件是操作系统提供给用户或者说应用程序操作硬盘的一种功能

2、为何要用文件
读写文件就是在读写硬盘:我们对文件的读写操作都会被操作系统转换成硬盘的读写操作

应用程序-------------》文件对象、文件句柄
操作系统-------------》文件
硬件-----------------》硬盘

3、如何用文件


"""
f = open(r'a.txt', mode='rt', encoding='utf-8')
# print(f) # 文件对象、文件句柄
res = f.read()
print(res)

f.close()
# print(f)
# f.read()
# del f


with open(r'a.txt', mode='rt', encoding='utf-8') as f,\
open('b.txt',mode='wt',encoding='utf-8') as f1:
pass
二、文件的打开模式
# 文件打开模式
# 1、控制文件读写操作的模式
# r(默认)
# w
# a

# 2、控制文件读写内容的模式
# t(默认的):读写都是以字符串为单位的,只适用于文件文件,必须指定encoding参数
# b:读写都是以bytes为单位的,适用于所有文件,一定不能指定encoding参数


# r模式:只读模式,如果文件不存在则报错,文件存在则文件指针处于文件开头
# f = open('a.txt',mode='rt',encoding='utf-8')
# # print(f.read())
# # print('='*50)
# # print(f.read())
# print(f.readable())
# print(f.writable())
# f.close()

# w模式:只写模式,如果文件不存在则创建空文档,文件存在则清空,文件指针处于文件开头
# f = open('a.txt',mode='wt',encoding='utf-8')
# # f.write("你好\n")
# # f.write("哈哈哈\n")
# # f.write("我擦勒\n")
#
# f.write("你好\n哈哈哈\n我擦勒\n")
# # print(f.readable())
# # print(f.writable())
#
# 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")
# print(f.readable())
# print(f.writable())
# 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)


# 方案二:
# 储备知识:
# with open('a.txt',mode='rt',encoding='utf-8') as f:
# # f.read()
# for line in f:
# print(line,end='')


# 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:
# f2.write(line)


# 可读可写
# r+t
# w+t
# a+t
#
# r+b
# w+b
# a+b

# with open('a.txt',mode='r+t',encoding='utf-8') as f:
# print(f.readable())
# print(f.writable())
# print(f.read())
# f.write("22222222222222222222\n")

三、文件操作的其他方法

# with open('a.txt',mode='w+t',encoding='utf-8') as f:
# print(f.readable())
# print(f.writable())
# with open('a.txt',mode='rt',encoding='utf-8') as f:
# # lines = f.readlines()
# # print(lines)
#
# print(f.readline())
# print(f.readline())


# 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)
#
# # f.writelines(lines)
#
# f.write('hello')
# f.flush()
# # f.writelines('hello')

四、控制文件指针移动
# 大前提:只有t模式下的,f.read(n)中的n代表的是字符个数,除此以外,关于指针的移动,单位都是字节bytes
# f.read()
# with open('a.txt',mode='rt',encoding='utf-8') as f:
# res = f.read(6)
# print(res)

# with open('a.txt',mode='rb') as f:
# # res = f.read(6)
# res = f.read(8)
# print(res.decode('utf-8'))

# f.truncate()
# with open('a.txt',mode='r+t',encoding='utf-8') as f:
# f.truncate(8)



# f.seek移动的全都是字节个数
# f.seek(字节个数,0)
# f.seek(字节个数,1)
# f.seek(字节个数,2)

发表评论

0/200
309 点赞
0 评论
收藏
为你推荐 换一批