首先,为什么要用文件操作
发表博客,用到文件上传。会用到open() open()函数 返回值是流对象 默认为txt文件 open(file, mode=‘r’, buffering=None, encoding=None, errors=None, newline=None, closefd=True)
- file 路径
- mode 模式
mode:r w rb wb
纯文本文件 r:read 读 将外界的东西输入 w:write 写 将内部的东西输出
可以是纯文本,图片,音乐,电影 rb read binary 二进制字节读 wb write binary 二进制字节的写 ** 文件上传:我上传一个文件到网盘,网盘写入自己的内存** ** 文件下载:网盘读自己的内存,硬盘写东西到我的内存。**
- buffering 缓存 将内容放入缓存,cpu在缓存中提取文件
read()函数 读取管道的值, 注意: 如果传递的内容有误会报错。 **readable()**判断是否可以读取 **readline()**读取一行内容,但是在流中读,如果没有在流中,会报错 **readlines()**读取多行,保存在列表中,
能不能读取图片?
能,但是不是默认的读取方式。 open(r”地址“,”rb“)表示打开图片
写文件
tt=open(r’D:\下载\a.txt’,‘w’) 打开管道 写文件,将mode改为”w“ 再在write(”“)函数中添加内容,就能写入 在文件写入东西,会将源文件先清除然后再写入,。 close()释放资源函数
tt=open(r'D:\下载\a.txt','w')
s='''你好,欢迎来到俺们村,俺们村有钱'''
result=tt.write(s)
print(result)
mode=”A‘在现有的基础上加,不会删除原来的文件
文件的复制
源文件:c:\girl.jpg 目标文件:D:\girl.jpg 文件复制, with open()as stream:相当于打开一个文件操作完了再关闭 可以帮助自动释放资源
with open('D:\下载\OIP-C.jpg',"rb") as stream:
contanier=stream.read()
with open('E:\CloudMusic\girl1.jpg','wb')as wstream:
wstream.write(contanier)
多个文件复制,os模块。
os模块 提供很多函数
os.path 表示对路径的操作 os.path.driname(file) 获取当前文件所在文件目录(绝对路径) os.path.jion(path,"") 返回是拼接后的新路径。 os.path.isabs()判断是不是绝对路径 os.path.isfile()判断是否是文件 os.path.isdir()判断是否是文件夹 os.path.split(path)将文件路径和文件名切割 os.path.splitext()分割文件和扩展名 os.path.size()返回文件的大小,返回值是字节的个数 os.path.exists()判断文件夹是否存在 os.getcwd() 获取当前文件所在目录 os.listdir()返回指定目录下的所有文件和文件夹,保存在列表中。 os.mkdir() 创建一个文件夹 os.rmdir() 删除文件夹 删除目录只能是空 os.removedirs()删除多个目录 os.chdir() 切换目录
绝对路径 vs 相对路径
绝对路径;D:\下载 相对路径,返回上一级:…/ 当前文件的上一级 同级别就不用。
获取路径
获取当前文件所在文件夹的路径 os.path.dirname() 通过相对路径获得绝对路径 os.path.abspath() 获取当前文件的绝对路径 os.path.abspath(–file–) 获取当前文件的据对路径 os.getcwd() 作业 复制文件夹中的内容到另一个文件夹 p1=D:\下载 \p1 p2=“D:\下载\p2” 封装成为一个函数
str_path = r'D:\p1'
target_path = r'D:\p2'
def copy(str,target):
if os.path.isdir(str) and os.path.isdir(target):
print("nihao ")
filelist = os.listdir(str)
for file in filelist:
str1 = os.path.jion(str,file)
with open(str1,'rb') as stream:
container=stream.read()
target1 = os.path.jion(target, file)
with open(target1, 'wb') as wstream:
wstream.write(container)
else:
print("复制成功")
copy(str_path,target_path)
图书管理系统 持久化保存:文件 list 元组,字典-----》都是内存,不能持久化保存 文件名,
|