您的位置:首页 > 编程语言 > Python开发

Python随记(10) os.path pickle模块 运用递归找子目录的文件

2020-03-29 19:43 1321 查看

os.path模块

函数 食用方法
basename(path) 去掉目录路径,单独返回文件名
dirname(path) 去掉文件名,大怒返回目录文件
join(path1,path2…) 将path1 path2组合成一个路径名
split(path) 分割文件名和路径,返回一个二元组。如果完全是目录,会将最后一个目录作为文件名去分割,而且不会判断文件或目录是否存在
splitext(path) 分离文件名与扩展名,返回二元组
getsize(file) 返回指定文件的尺寸,单位是字节
getatime(file) 返回指定文件最近访问的时间(浮点型秒数,可以用time模块的gmtime()函数换算
getctime(fiel) 返回指定文件的创建时间
getmtime(file) 返回文件最新的修改时间

以下函数返回True None

exists(path) 判断指定路径是否存在
isabs(path) 判断指定路径是否时绝对路径
isdir(path) 判断指定路径是否存在切是一个目录
isfile(path) 是否是一个文件
islink(path) 是否是一个符号链接
ismount(path) 是否存在且是一个挂载点
samefile(path1,path2) 判断两个路径是否指向同一个文件

还有很多函数的。。。。

运用递归找子目录的文件

import os
def search_file(start_dir, target) :
os.chdir(start_dir)
for each_file in os.listdir(os.curdir) :
if each_file == target :
print(os.getcwd() + os.sep + each_file) # 使用os.sep是程序更标准
if os.path.isdir(each_file) :
search_file(each_file, target) # 递归调用
os.chdir(os.pardir) # 递归调用后切记返回上一层目录
start_dir = input('请输入待查找的初始目录:')
target = input('请输入需要查找的目标文件:')
search_file(start_dir, target)

一个输入路径,文件名找文件的代码。运用递归去找子目录下的文件。递归调用后记得返回上一层目录

请输入待查找的初始目录:C:\Users\NERO\Desktop\python专用
请输入需要查找的目标文件:123.txt
C:\Users\NERO\Desktop\python专用\123\123.txt
C:\Users\NERO\Desktop\python专用\123.txt

根据上面的可以增加一些功能:

import os
def search_file(start_dir,target):
os.chdir(start_dir)
for each in os.listdir(os.curdir):
ext = os.path.splitext(each)[1]
if ext in target:
filelist.append(os.getcwd()+os.sep+each+'\n')
if os.path.isdir(each):
search_file(each,target)
os.chdir(os.pardir)
start_dir=input('输入要找的路径:')
list1=input('请输入要找的文件扩展名:')
target=list1.split(',')
filelist=[]
search_file(start_dir,target)
f= open(r'C:\Users\NERO\Desktop\python专用\file.txt','r+')
f.writelines(filelist)
f.close()

查找路径下指定扩展名的文件,并保存到file.txt这个文件中。。。。。(.avi啥的)

pickle模块(泡菜)

  1. 对于普通的文件操作,想要保存列表,字典,类的实例这些复杂的数据类型会很麻烦。pickle模块就可以容易的将复杂的数据类型储存为文件的形式。它可以几乎所有的对象转换成二进制形式存放。
import pickle
list1=[123,3.14,'hhh',['aaa','bbb']]
file=open(r'路径','wb')
pickle.dump(list,file)
file.close()

在要使用的时候,用二进制模式打开文件,在用load() 把数据加载进来。

pickle.dump(data, file) # 第一个参数是待存储的数据对象,第二个参数是目标存储的文件对象,注意要先使用’wb’的模式open文件

  • 点赞
  • 收藏
  • 分享
  • 文章举报
AI路漫漫 发布了25 篇原创文章 · 获赞 0 · 访问量 345 私信 关注
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: