1. 文件操作概述及操作过程
文件作用:进行持久化存储数据
操作过程:
双击打开
点叉关闭
程序操作文件的过程:
打开-> 设置打开的模式,(读写) open(打开文件路径,打开模式)
操作文件(读取、写入、删除)
关闭-> close()
2. 文件的访问模式
读取:
文本形式
程序文件
.txt 文件
.rtf 文件
二进制形式
音频文件
视频文件
图片文件
写入:
文本形式
程序文件
.txt 文件
.rtf 文件
二进制形式
音频文件
视频文件
图片文件
以文本方式打开方式的模式
r -> rt -> read text 以文本方式打开文件读,文件存在,打开成功,文件不存在,打开失败
w -> wt -> write text 以文本方式打开文件写,不管文件是否存在,都会新创建一个新文件
a -> at -> append text 以文件方式打开文件追加,文件不存在,创建文件,文件存在,那么打开文件
然后将光标移动到文件的最后
以二进制形式打开文件的模式
rb 以二进制形式打开文件读取
wb 以二进制形式打开文件写入
ab 以二进制形式打开文件追加
这三种模式都具有读取写入功能
r+ 和 w+ 都可以读可以写,但是r+找不到文件会报错,w+会创建文件
r+是追加w+是覆盖
r+光标默认在开头
w+光标默认在结尾
a+在末尾写入内容如果文件不存在则创建文件写入,光标默认在结尾
3. 文件的读取
read()
4. 文件读取的几种方式
read() # 一次性将整个文件内容读取出来,不适合大文件读取
read(size) # 掌握 读取指定的字节数的文件内容 ,如果文件最后没有内容了,那么read的返回值是空字符串 ,b ""或"" 一般指定4096
readline() # 读取一行
readlines() # 一次性将整个文件内的内容以行的形式读取出来,放到一个列表中
5. 文件的写入
write(content) 该函数用来向文件中写入数据
前提: 使用该函数时,打开文件时,必须要给定写入权限,要具有写入模式
6. 常用文件和文件夹操作
在日常使用os模块导入文件时要十分注意工作路径和导入文件是否在同一目录下
使用文件操作需要导入os 模块,以下是文件操作的一些函数
路径操作
getcwd.() 获取当前工作目录的绝对路径
os.path.abspath("file.py") 获取文件的绝对路径
os.path.relpath("file.py",start) 获取文件的相对路径 stat表示相对对象
rename()重命名文件
exists(path) 如果 path 文件或文件夹存在返回 True,否则返回 False;
isabs(path) path 是绝对路径返回 True,否则返回 False;
isdir(path) path 是文件夹返回 True,否则你懂;
isfile(path) path 是文件返回 True。
文件操作
os.path.getsize("demo4.py") 获取文件大小
remove() 删除文件
mkdir() 创建文件
chdir() 切换到目录
rmdir() 删除目录
shutil.copy(旧文件,新文件) 复制文件
shutil.copytree("旧目录","新目录") 复制目录
shutil.move(旧文件,新文件) 移动文件
7. 翻车点:
当以二进制模式打开文件进行文件操作时.
read 函数最终读取文件内容为空时,返回的结果为 b''
表示是一个二进制的空字符串
在 Python2.7版本中. '' == b'' 结果为True
在 Python3.6版本中. '' == b'' 结果为False
在 Python3.6版本中使用b'' 作为二进制空字符
作业复制多个文件并改名涉及文件操作先导入os库
import os
主要程序结构导入源文件和目标文件并向函数传参
src =r'D:/data/v'
dst=r'D:/data/v_bak'
muilt_file_copy(src,dst)
构造复制文件的函数:
函数需要两个参数,一个源文件夹src,一个目标文件夹dst
对于文件读取操作需要先跳转到文件目录再进行
#获取当前工作目录
print(os.getcwd())
#切换到源文件目录中
os.chdir(src)
读取所有源文件信息
创建目标文件夹
#读取所有源文件信息
file_list=os.listdir(src)
# print(file_list)
#创建目标文件夹
os.mkdir(dst)
由于是多个文件所以采用循环来进行
#循环读取文件次数
#遍历每个文件
n=0
for file in file_list:
n+=1
#对源文件名进行字符串连接
dst_file = dst+'/'+'性感阿刁在线跳舞'+ file
#分别以读、写方式打开源文件和目标文件
file_r=open(file,'rb')
file_w=open(dst_file,'wb')
while True:
#一次读取1024字节
content = file_r.read(1024)
#打开文件使用的是二进制模式打开,所以在判断结束时需要判断是否是二进制的空字符
if content==b'':
print(f'第{n}个文件{file}复制成功,改名为{dst_file},进度:{round(100*n/len(file_list),2)}%')
# 复制成功关闭文件跳出循环
file_r.close()
file_w.close()
break
file_w.write(content)
else:
print(f'一共复制了{len(file_list)}个文件')
反复运行会报错是因为目标文件夹已存在,需要把目标文件夹删除,