发布时间:2025-06-24 19:34:20 作者:北方职教升学中心 阅读量:504
w、
关闭我们有手动的关闭
close()
还有自动的
我们在打开的时候用with open,在这个代码结束之后就会进行自动关闭的操作了
对于as的用法
我们这里
as将open("demo.txt")打开的文件对象绑定到变量f上。音频、
这意味着在with语句的代码块中,你可以使用变量f来访问这个文件对象
我们将打开的文件的返回对象通过as赋值给对象
读取文件信息
read:将文件的内容全部读取
with open("demo.txt") as f: print(f.read())#123456#通过这种方法我们能将文件中的数据进行读取
read(n):读取一个长度的数据
n是正整数
在括号内写上数字的话,那么我们就设置了读取的长度限制
with open("demo.txt") as f: print(f.read(3))#123
对于文档中存在汉字的读取方式
对于文档中存在汉字的话,我们是如何进行读取的呢?
#我们在demo.txt文件中添加中文通过这种方法进行读取的话就会报错,这是为什么呢?#根据报错的信息,我们需要对这个打开的时候的编码格式进行改变with open("demo.txt",encoding='utf-8') as f: print(f.read())'''123456这是一个demo.txt文件'''
只需要将这个open内的第二个默认参数改为utf-8就行了
设置编码格式uft-8
下一次读取的开始位置
对于多次读取的话,我们的下一次读取就是从前面一次读取的结束位置的后面的那个位置开始进行读取操作的
ith open("demo.txt",encoding='utf-8') as f: print(f.read(2)) print('-'*30) print(f.read())'''12------------------------------3456这是一个demo.txt文件'''#我们在第二次读取的时候并没有从头开始#而是从上一次读完的下一个位置开始的
readline():一次读取一行数据
将文件中的每一行进行读取
with open("demo.txt",encoding='utf-8') as f: print(f.readline())#读取第一行 #123456 print(f.readline())#读取第二行 #这是一个demo.txt文件
readlines():以行为单位,读取所有数据,返回的是一个以行数据为元素的列表
with open("demo.txt",encoding='utf-8') as f: print(f.readlines())#['123456\n', '这是一个demo.txt文件']
将每一行的数据当成一个元素,然后放到一个列表中进行存储
文件的写入
我们通过write进行数据的写入
write(字符串)
我们打开时的open默认的是r,就是只能读,不能写的模式
我们如果这么就进行写入的操作的话,那么就是会进行报错操作的
'''with open("demo.txt",encoding='utf-8') as f: f.write('胡云凯')r'''Traceback (most recent call last): File "C:\Users\27890\Desktop\15.文件操作.py", line 154, in <module> f.write('胡云凯')io.UnsupportedOperation: not writable'''#这里进行了报错
那么我们如何进行数据的写入呢?
那么我们就需要用另外一种模式进行打开了
r----只读不能写,如果文件不存在是会进行报错的
w---只能够进行写入,不存在就创建,存在的话就进行所有数据进行写入
a---只能够进行写入,不存在就创建,存在的话就就在原有的数据的基础下进行数据的追加写入
我们需要将这个打开文件时的第二个参数进行修改
with open("demo.txt",mode='w',encoding='utf-8') as f: f.write('胡云凯666')
对文件进行查看,确实是多了这个数据
w的介绍
对于'w'的话,只能写,打开的文件不存在就进行创建的操作,打开文件会将之前存在的文件进行清空的操作的
with open("demo1.txt",mode='w',encoding='utf-8') as f: f.write('胡云凯666')
可以看到我们本来要打开demo1这个文件的
但是我们桌面上没有这个文件
对于w的话,如果没有文件我们就进行创建的操作
w有个霸道的地方,如果我们打开的文件之前有数据的话,w会将文件内的数据进行清空的操作
然后进行数据的写入操作的
a的介绍
a其实是追加的意思,我们在列表中涉及到追加的知识
对于a的话,打开的文件不存在的话就进行这个文件的创建操作
with open("demo2.txt",mode='a',encoding='utf-8') as f: f.write('胡云凯666')
可以看见桌面上多了一个demo2的文件
现在我们的demo1里面是有数据存放的
但是现在我们通过a方式进行数据的写入操作
那么原先的数据会消失吗?
with open("demo1.txt",mode='a',encoding='utf-8') as f: f.write('凯子坚持C')
我们发现原先的数据并没有被删除,并且在原先的数据后面进行数据的追加了
那么我们可以进行归纳一下,a只写不读,打开文件不存在的话是会进行文件的创建的,如果文件存在的话,并且有数据的话,我们就在原先的数据的后面进行数据的读写
写入的话是不会帮你换行的
我们只能在写入的时候加上\n进行换行操作
对文件可读可写操作
在r 、#这意味着在with语句的代码块中,你可以使用变量f来访问这个文件对象。字符串类型
字符串类型的流
import ios=io.StringIO()#生成一个字符串类型的临时文件s.write('hello')s.seek(0,0)#将光标放到开头print(s.read())
字节类型的流
import iob=io.BytesIO()#生成一个字节类型的临时文件#我们需要进行编码操作b.write('你好'.encode())#只能写入字节数据,需要进行编码print(b.getvalue())#b'\xe4\xbd\xa0\xe5\xa5\xbd'#字节的访问就是getvalue()#如果像变成我们能看懂的东西,那么就进行解码操作print(b.getvalue().decode())#你好
4.文件目录操作
操控电脑上的文件,需要导入os模块
文件夹的创建
使用os.mkdir
import osos.mkdir('凯子坚持C')
如果我们想要固定创建的位置的话,我们就需要使用相对路径
import osos.mkdir(r'D:\作业\凯子坚持C')
如果是同一个文件夹的话,那么我们使用相对路径就行了
文件夹的重命名操作
现在我们的桌面是有一个文件的---凯子坚持C.txt
我们如何对这个文件进行重命名的操作呢?
使用os.rename
import osos.rename("凯子坚持C",'小凯')
文件夹的查询操作
获取当前文件的位置
os.getcwd()---返回值就是当前文件的位置
import osprint(os.getcwd())#获取当前文件的位置#C:\Users\27890\Desktop
获取当前文件夹内所有的文件
os.listdir()
import osprint(os.listdir())#获取当前文件夹内所有的内容
这些操作我们也是可以进行路径的指定的,获取指定文件夹中所有的内容
删除文件夹
删除空文件夹os.rmdir("文件名")
import osos.rmdir("小凯")#删除空文件夹
将文件夹进行删除
os.remove
import osos.remove("文件名")
对图片进行操作
如果想打开图片的话,那么我们需要用字节的方式进行打开
那么我们的读取模式从r变成rb
b是以字节的方式进行读取
这里我进行读取是十分卡顿的,因为这个图片的字节是很多的
with open(r"C:\Users\27890\Desktop\微信图片_20240906224155.png",mode='rb') as f: print(f.read())
b:以字节方式打开内容
应用于打开图片、视频等非文字文件
对图片进行复制的操作
我们需要先拿到需要复制的文件信息
然后再进行复制
我们先定义一个变量,将要复制图片的信息进行存储
with open(r"C:\Users\27890\Desktop\微信图片_20240906224155.png",mode='rb') as f: data=f.read()#我们这里不能在用rb了,因为我们要复制这个图片了,所以我们用wbwith open(r"C:\Users\27890\Desktop\微信图片_20240906224155附件.png",mode='wb') as f: f.write(data)
从名字我们就能看出这个图片我们进行复制成功了
我们需要先打开这个我们要复制的图片,将获取的信息用变量进行保存
然后利用这个变量进行文件的创建
最后就得到了这个复制的图片