【Python】文件 读取 写 os模块 shutil模块 pickle模块

本文详细介绍了Python中对文件的读取、写入操作,包括使用open函数的不同模式,以及UTF-8编码。还涵盖了os模块的文件管理功能,如创建、删除目录,以及os.path获取文件属性的方法。此外,文章讨论了shutil模块在文件拷贝、移动、删除和压缩解压缩方面的应用,以及pickle模块如何实现数据的序列化和反序列化,实现数据的永久存储。
摘要由CSDN通过智能技术生成

目录

1.文件

1.1 读取操作

1.2 写操作

1.3 os:文件管理

1.4 os.path:获取文件属性

1.5 shutil:文件的拷贝删除移动解压缩

1.6 pickle:数据永久存储


1.文件

  • 文件编码

编码是一种规则集合,记录内容和二进制间相互转换的逻辑。

最常用:UTF-8编码

1.1 读取操作

## 打开文件获取文件对象
# mode:读取模式(r:只读;w:删除原内容,若不存在则创建;a:追加内容,若不存在则创建)
# encoding:编码格式(一般UTF-8)
文件对象=open(file,mode,encoding)
​
## 读取指定长度字节
# 不指定则读全部
文件对象.read(num)
​
## 读取一行
文件对象.readline()
​
## 读取全部行,得到列表
文件对象.readlines()
​
## 循环文件行,一次循环得一行
for line in 文件对象
​
## 关闭文件对象
文件对象.close()
​
## 打开用完后,自动关闭
with open('文件名',) as f:
     data=file.read()
  • 注:读取完后一定要close,不然文件会一直被占用。

1.2 写操作

f=open('1.txt','w') # 创建新文件,只允许写
f=open('filename','a') # 在已经存在的文件中追加内容
​
# 文件写入
f.write('zyy') # 并没有写入文件,而是在缓冲区,当flush或者close时写入文件
#(为了避免频繁打开硬盘浪费时间)
# 内容刷新
f.flush() # 内容写入硬盘

1.3 os:文件管理

用于文件管理。

# 创建新目录
os.mkdir(path)
​
# 删除空目录 
os.rmdir(path)
​
# 返回目录中所有文件
os.listdir(path)
​
# 删除path指向的文件
os.remove(path)
​
# 重命名文件
# src,dist:命名前后路径
os.rename(src,dist)
​
# 改变文件权限
os.chmod(path,mode)
​
# 查询当前工作路径
os.getcwd()
​
# 改变当前工作目录
os.chdir(path)
​
# 执行shell命令
os.system(命令)
os.system('cmd')

1.4 os.path:获取文件属性

用于文件属性获取。

# 返回当前python执行脚本的路径
os.path.dirname(__file__)
​
# 返回一个路径的目录名和文件名
os.path.split(path)
​
# 分别检验路径是文件还是目录
os.path.isfile(path)
os.path.isdir(path)
​
# 检验给出路径是否真的存在
os.path.exists(path)
​
# 返回路径path中的文件名
os.path.basename(path)
os.path.dirname(path)
​
# 分离文件名与扩展名
os.path.splitext()
​
# 获取文件大小
os.path.getsize(name)

1.5 shutil:文件的拷贝删除移动解压缩

主要针对文件的拷贝删除移动。

# 拷贝文件
shutil.copy(file_path,dir_path)
​
# 移动或重命名文件
# 如果有重名文件将报错
shutil.move(file_path,dir_path) # 移动到另外一个文件夹中
shutil.move(file_path,new_file_path) # 冲命名为新的绝对路径
​
# 拷贝文件夹
shutil.copytree(file_path,dir_path) # 拷贝所有文件到新文件夹
​
# 删除文件夹
shutil.rmtree(dir_path) 
# 压缩文件
shutil.make_archive(base_name, format, root_dir, [base_dir])
# base_name : 创建的目标文件名,包括路径,减去任何特定格式的扩展。
# format : 压缩包格式。”zip”, “tar”, “bztar”或”gztar”中的一个。
# root_dir : 需要打包的文件夹路径。打包完成时存储在上一级目录。
# base_dir : 使用后会将base_dir作为路径,解压后有个有层级的文件夹,而仅非只有单独的打包内容。
​
# 解压文件
shutil.unpack_archive(filename, extract_dir, format)
# filename:压缩文档的完整路径
# extract_dir:解压缩路径,默认为当前目录。
# format:压缩格式。默认使用文件后缀名代码的压缩格式。"zip", "tar", "bztar"或"gztar"中的一个。

1.6 pickle:数据永久存储

Python的pickle模块实现了基本的数据序列和反序列化。

序列化操作:能够将程序中运行的对象信息保存到文件中去,永久存储。

反序列化操作:能够从文件中创建上一次程序保存的对象。

  • pickle提供dumps(), loads(), dump(), load()

import pickle
tup0=('zyy',{"k1",9},[9,0],None)
​
# dumps(obj)
# 将python对象序列封装成二进制对象
pick1=pickle.dumps(tup0) # 将tup0转换成二进制对象
​
# loads(bytes_obj)
# 读取给定的二进制对象数据,并将其转换为python对象
mytup=pickle.loads(pick1) # 将pick1转成python对象
​
# pickle.dump(obj, file, protocol=None)
# 将obj以二进制形式保存到file中去
with open("a.txt",'wb')as f:
     pickle.dump(tup1,f)
​
# pickle.load(file)
# 将二进制对象文件转换成python对象
with open("a.txt",'rb')as f:
     tup2=pickle.load(f)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值