做编程最重要的是思想,编码只是一个工具。
一、文件的使用流程
1.打开文件
(1)open()
*相对路径:相对于哪一个目录下面的指定文件
(2)模式
a.r
以只读的方式打开文件
文件的指针将会放在文件的开头
如果文件不存在的话会报错
b.w
以只写方式打开文件
文件的指针将会放在文件的开头
如果文件不存在,会自动创建一个新文件
c.a
以追加方式(只写)打开文件
文件的指针将会放在文件结尾
如果文件不存在,会自动创建一个新文件
d.增加b
rb、wb、ab
处理二进制文件
e.增加+
r+、w+、a+、rb+、rw+、ra+
代表都是以读写模式进行打开
2.读写操作
1.定位
f.seek(偏移量,[0,1,2])
f.tell()
0 默认开头
1 当前位置
2 文件末尾
*文本文件的操作模式下(不带b),只能写0
*如果想要写1/2 必须在二进制文件操作模式下
2.读
f.read(字节数)
f.readline(limit)
f.readlines()
读取所有的值并把他们遍历成一个列表
好处:节省内存空间
for in
可以遍历f本身或者行列表
迭代器
*判断是否可读
读取前加一个容错处理 if f.readable()
*注意
(1)一般文件特别大的时候,可以用readline方法 按行加载,可以节省内存 但相比其他两个读取方法,性能较低
(2)其他两个方法,一次性读取文件所有内容,虽然占用内存,但处理性能比较高。
3.写
f.write()
容错处理 if f.writeable()
4.关闭
f.close
可在前面写f.flush()立即清空缓冲区内容到磁盘文件。
二、文件的相关操作
1.模块
import os
2.重命名
1.重命名文件、目录、文件夹
os.rename() 修改单级 目录/文件 名称
os.renames() 修改多级 目录/文件 名称
2.删除
删除文件
os.remove(“文件路径”) *文件不存在会报错
删除目录
os.rmdir(path)
不能递归删除目录 如果文件夹为空,会报错
os.removes(path)
可以递归的删除目录 如果文件夹为空 会报错
3.创建目录
os.mkdir(“文件夹名称”[,model]) 不能递归创建
*model——数字模式权限 默认值八进制777
(1)文件拥有者
(2)同组用户
(3)其他用户
4.查看改变列举目录
import os
#获取当前目录
os.getcwd()
#改变默认目录
os.chdir("目标目录")
#获取目录内容列表
os.listdir("./") #当前目录
os.listdir("../") #当前目录的上一级目录
该处使用的url网络请求的数据。
案例
文件复制
1.要求 将一个文件复制到另一个文件中
2.步骤分析
#1.只读模式,打开要复制的文件
#只写模式,打开副本模式
source_file=open("d.txt","r")
dst_file=open("d.bat.txt".a)
# 2.从源文件中读取内容
# 写入目标文件中
content=source_file.read()
dst_file.write(content)
# 3.关闭源文件和目标文件
source_file.close()
dst_file.close()
注意要编码统一
文件分类 并生成文件清单
1.要求
给定一批文件,按照文件后缀名,划分不同的文件夹
生成txt格式的文件清单
#获取所有的文件名称列表
import os
import shutil
path="files"
if not os.path.exists():
exit()
file_list=os.listdir("flies")
#1.遍历所有的文件(名称)
for file_name in file_list:
print(file_name)
#2.分解文件的后缀名
#2.1获取最后一个.的索引位置
index=file_name.rfind(".")
if index=-1
continue
print(index)
#2.2 根据索引位置,当前起始位置,来获取后续的所有字符串内容
extension=file_name[index+1:]
print(extension)
#3.查看一下,是否存在同名的目录
#4.如果不存在这样的目录——>直接创建一个目录
if not os.path.exists(extension):
os.mkdir(extension)
shutil.move(file.name,extension)
注意容错处理 、切换文件夹