python引用文件 mode写在后面还是前面_python--->文件操作

应用:

1.文件上传

2.保存log

系统函数:

open(file, mode='r', buffering=None, encoding=None, errors=None, newline=None, closefd=True):

file:文件名

mode:默认‘r’

常用模式如下:

r:read 读 --------->纯文本文件

w:write 写--------->纯文本文件

b:binary 二进制,字节

rb:read binary--------->纯文本/图片/音乐/影像

wb:write binary--------->纯文本/图片/音乐/影像

buffering:缓存,类似运行内存,越大速度越快

工作原理分析:

文件上传:(读)电影上传(写)到网盘

文件下载:从(读)网盘上下载(写)到我的硬盘上

文档说明:

在函数中打一个三引号 "" "",会默认产生两个值,如下:

:param n:# 说明参数n是干嘛的

:return: # 有没有返回值

读文件操作:

stream = open(path/filename,'r')  # 返回值:stream(管道)

stream.read()          # 读取管道中全部内容

stream.readable()        # 判断是否可以读取 返回值:True/False

stream.readline()      # 读取一行内容

stream.readlines()       # 读取多行,并返回在列表中

注意:

1.如果传递的path/filename有误,则会报错:FileNotFoundError

2.如果是图片则不能使用默认的读取方式,mode需要改为'rb'

写文件操作:

stream = open(path/filename,'w')  # 返回值:stream(管道)

stream.write(s)    # 每次都会将原文件的内容清空,然后再写当前的内容,没有换行效果,如需要,自己添加\n

stream.writelines(Iterable)   # 可迭代的,没有换行效果,如需要,自己添加\n

追加文件操作:

stream = open(path/filename,'a')  # 模式'a',不会清空原来文件的内容,再原来基础上追加内容,相同于append效果

stream.write(s)

释放(管道)资源

stream.close()

标准的一次文件操作:

开始:open()

结束:close()

文件的复制:

1.在同目录下复制文件:

'''

原文件:c:\old.jpg

目标文件:c:\new.jpg

with结果open使用,可以帮助我们自动释放资源

'''

with open(r'c:old.jpg','rb') as rstream:   # 等同于 stream = open(r'c:old.jpg','rb')

container = rstream.read()    # 读取文件内容

with open(r'c:new.jpg','wb') as wstream:

wstream.write(container)

print("文件复制完成!")

2.将其他目录的文件复制到当前目录下:

思路:1.进入要复制的目录

2.读取原文件内容

3.获取当前目录路径以及原原文件的名字

4.拼接新文件路径

5.写入文件

import os

with open(oldpath/filename,'rb') as rstream:

container = rstream.read()    # 读取原文件内容

# 获取当前目录路径(绝对路径)

nowpath = os.path.dirname(__file__)

# 获取原文件的名字

oldfilepath = restream.name

oldfilename = oldfilepath[oldfilepath.rfind('\\')+1:]

# 拼接新文件路径

newfilepath = os.path.join(nowpath,oldfilename)

# 写入文件

with open(newfilepath,'wb') as wstream:

wstream.write(container)

print('文件复制完成!')

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值