python 文件操作

首先,为什么要用文件操作

发表博客,用到文件上传。会用到open()
open()函数 返回值是流对象
默认为txt文件
open(file, mode=‘r’, buffering=None, encoding=None, errors=None, newline=None, closefd=True)

  1. file 路径
  2. mode 模式

mode:r w rb wb

纯文本文件
r:read 读 将外界的东西输入
w:write 写 将内部的东西输出

可以是纯文本,图片,音乐,电影
rb read binary 二进制字节读
wb write binary 二进制字节的写
** 文件上传:我上传一个文件到网盘,网盘写入自己的内存**
** 文件下载:网盘读自己的内存,硬盘写东西到我的内存。**

  1. 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:#打开D:\下载\OIP-C.jpg文件
    contanier=stream.read()#将文件赋值到这个容器中
    with open('E:\CloudMusic\girl1.jpg','wb')as wstream:#打开E:\CloudMusic\girl1.jpg文件
        wstream.write(contanier)#在文件中写入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() 切换目录

os.walk()

1.格式:os.walk(top[, topdown=True[, οnerrοr=None[, followlinks=False]]])

参数:
top – 是你所要遍历的目录的地址, 返回的是一个三元组(root,dirs,files)。

root 所指的是当前正在遍历的这个文件夹的本身的地址 dirs 是一个 list , 内容是该文件夹中所有的目录的名字(不包括子目录)

files 同样是 list , 内容是该文件夹中所有的文件(不包括子目录) topdown --可选,为 True,则优先遍历 top目录,否则优先遍历 top 的子目录(默认为开启)。如果 topdown 参数为 True,walk 会遍历top文件夹,与top文件夹中每一个子目录。

onerror – 可选,需要一个 callable 对象,当 walk 需要异常时,会调用。

followlinks – 可选,如果为 True,则会遍历目录下的快捷方式(linux 下是软连接 symbolic link实际所指的目录(默认关闭),如果为 False,则优先遍历 top 的子目录。

返回值
返回生成器。

绝对路径 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:  # 打开E:\CloudMusic\girl1.jpg文件
                      wstream.write(container)

        else:
            print("复制成功")

copy(str_path,target_path)

图书管理系统 持久化保存:文件
list 元组,字典-----》都是内存,不能持久化保存
文件名,

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值