python的常用文件操作os、shutil、open和pickle

python的常用文件操作os、shutil、open和pickle


os 模块提供了非常丰富的方法用来处理文件和目录,python编程时,经常和文件、目录打交道,这是就离不了os模块。下面说说我常用的一些方法:

一、os文件和目录操作

1.判断操作

os.path.exists(path)  #判断文件或目录是否存在
os.path.isfile(path)  #判断是否为文件
os.path.isdir(path)  #判断是否为目录

以上是返回值都为True,否返回False

2.目录的查看

os.listdir(path)  #返回一个list,存储目录下所有的文件和目录名

遍历路径目录下的所有目录和文件

for root, dirs, files in os.walk(path):  #文件、目录遍历器
    print(root)  #表示当前正在访问的目录路径
    print(dirs)  #表示该目录下的子目录名list
    print(files) #表示该目录下的文件list
    print("==========================")

3.目录的创建

os.mkdir(path)  #只能创建path的最后一个目录
os.makedirs(path)  #创建path的完整路径目录

4.目录和文件的删除

os.remove(path)  #删除指定路径的文件
os.rmdir(path)  #删除空目录

5.重命名文件或目录

os.rename(old_path, new_path)  #将文件或目录名old_path修改为new_path

6.获取路径的最后部分

os.path.basename(r"My_program/test/code/train") #返回train

7.拆分目录和文件

os.path.split(r"My_program/test/code/train.py") #返回目录和文件名

8.连接目录与文件名或目录

os.path.join(r"My_program/test/code","train") #返回拼接的路径

二、shutil的常用操作

由于os文件操作没有移动和复制,所以用shutil做一些补充

1.复制文件或目录

shutil.copy(r"C:\Users\Desktop\1\1.jpg",r"C:\Users\Desktop\2") #将图片从目录1复制到目录2
shutil.copy(r"C:\Users\Desktop\1\1.jpg",r"C:\Users\Desktop\2\2.jpg") #将图片从目录1复制到目录2,并改名为2.jpg

2.移动文件或目录

shutil.move(r"C:\Users\Desktop\1\1.jpg",r"C:\Users\Desktop\2") #类似复制操作,只是不是复制而是移动

三、文件操作open

1.打开文件的常用模式

模式可做操作若文件不存在是否覆盖指针位置
r只能读报错-0
r+可读可写报错0
w只能写创建0
w+可写可读创建0
a只能写创建否,追加写最后
a+可读可写创建否,追加写最后

对应的,如果是二进制文件,就都加一个b:‘rb’,‘wb’,‘ab’,‘rb+’,‘wb+’,‘ab+’

2.追加读写

with open(file, 'a+') as f:  #追加写操作,没有就创建
     f.write("mobile"+'\n')   #加\n换行显示

with open 打开使用完后会自动关闭,open打开需要close

with open(file, 'r') as f:  #读操作,有中文需添加, encoding='utf-8'参数
	line = f.readlines()  #读取所有行放在list中
	one_line = f.realine()  #读取一行的内容
	all = f.read()  #读取文件的所有内容
with open('a.txt',"r") as f1, open('b.txt', 'w') as f2:  #可以同时操作多个文件
	for line in f1:  #一行行的读
		print(line)

四、读写二进制数据pickle

序列化存储可以以python字典,数组,列表等形式保存

import pickle
save = r"./num.pkl"  #以pkl后缀存储

list = [1,2,3,4,5,6,7]
with open(save, "wb") as f:  #二进制写
	pickle.dump(list, f)  #序列化存储

path = r"./num.pkl"  #读取路径
f1 = open(path, "rb")  #二进制读
list = pickle.load(f1)  #对数据流进行反序列化读取
f1.close()
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值