1.调用glob
glob.blob遍历指定目录下的所有文件和文件夹,不递归遍历,需要手动完成递归遍历功能。 注意windows用'2个\'和linux用'/',以及最后的'*'
import glob as gb
path = gb.glob('E:\\前端帮助文档\\*')
print(path,type(path))
for path in path:
print ('方法一path: ',path,)
print('---------------------------------------------------')
2.2.调用os.walk 是个生成器,返回三个元素,遍历指定目录下的所有文件和文件夹,递归遍历,节约内存。
os.walk是生成器,next(os.walk)或者for dirpath, dirnames, filenames in os.walk('E:\前端帮助文档'), 获取一个包含三元素的元祖 dirpath:当前路径, dirnames:当前路径下的文件夹, filenames:当前路径下的文件名
import os
print(os.walk('E:\\前端帮助文档'), '类型: ---', type(os.walk('E:\\前端帮助文档')))
print(next(os.walk('E:\\前端帮助文档')))
a_next = os.walk('E:\\前端帮助文档')
print(111, next(a_next), '--类型: ---', type(next(os.walk('E:\\前端帮助文档'))))
print(222, next(a_next), )
print(333, next(a_next), )
for dirpath, dirnames, filenames in os.walk('E:\\前端帮助文档'):
print('dirpath哈01', dirpath)
print('dirnames哈02', dirnames)
print('filenames哈03', filenames, '\n')
for file in filenames:
fullpath = os.path.join(dirpath, file)
print('哈fullpath', fullpath, '哈file哈', file)
2.3.自己DIY 遍历指定目录下的所有文件和文件夹,递归遍历,自主编写,扩展性强,可以学习练手。
import os;
files = list();
def DirAll(pathName):
if os.path.exists(pathName):
fileList = os.listdir(pathName);
print('fileList是---', fileList)
for f in fileList:
f = os.path.join(pathName, f);
if os.path.isdir(f):
DirAll(f);
else:
dirName = os.path.dirname(f);
baseName = os.path.basename(f);
if dirName.endswith(os.sep):
files.append(dirName + baseName);
else:
files.append(dirName + os.sep + baseName);
DirAll("E:\\前端帮助文档\\");
#_*_ encoding: utf-8 _*_ @author: ty hery 2020/6/23
# https://www.jianshu.com/p/1b7004db2439
import os.path
path = 'D:\python3.64\Problems_疑难问题\copy问题.py'
print(os.path.basename(path)) # 查询路径中包含的文件名
print(os.path.dirname(path)) # 查询路径中包含的目录
info = os.path.split(path) # 将路径分割成文件名和目录两个部分,放在一个(元祖)中返回
print(info,'这是info')
path2 = os.path.join('D:\python3.64\Problems_疑难问题', 'home', 'vamei', 'doc', 'file1.txt') # 使用目录名和文件名构成一个路径字符串
print(path2,'这是path2')
p_list = [path, path2]
print(os.path.commonprefix(p_list),'查询多个路径的共同部分') # 查询多个路径的共同部分
os.path.normpath('/home/vamei/../.') # 去除路径path中的冗余。比如'/home/vamei/../.'被转化为'/home'
print(os.path.normpath('/dsf/homfgjhg/vame555i/../..'),'去除路径path中的冗余')
import os.path
path = 'D:\python3.64\Problems_疑难问题'
# python获取文件夹下所有文件
i = 1
for filename in os.listdir(r'D:\python3.64\Problems_疑难问题'):
print(i,filename,'文件夹')
i+=1
# 方法二:使用glob模块,可以设置文件过滤
import glob
for filename in glob.glob(r'c:\windows\*.exe'):
print(filename,'c:\windows\*.exe')
import os
current_address = os.path.dirname(os.path.abspath(__file__))
print('获取当前文件夹',current_address,'--------',os.getcwd())
for parent, dirnames, filenames in os.walk(current_address):
# Case1: traversal the directories
for dirname in dirnames:
print("Parent folder:", parent)
print("Dirname:", dirname)
# Case2: traversal the files
for filename in filenames:
print("Parent folder:", parent)
print("Filename:", filename)
print("abs_path:", os.path.abspath(filename))
# 链接:https://www.jianshu.com/p/1b7004db2439
print(os.path.exists(path)) # 查询文件是否存在
print(os.path.getsize(path)) # 查询文件大小
print(os.path.getatime(path)) # 查询文件上一次读取的时间
print(os.path.getmtime(path)) # 查询文件上一次修改的时间
print(os.path.isfile(path)) # 路径是否指向常规文件
print(os.path.isdir(path)) # 路径是否指向目录文件
import os
print('1',os.getcwd()) #获取当前工作目录路径
print('2',os.path.abspath('.')) #获取当前工作目录路径
print('3',os.path.abspath('test.txt')) #获取当前目录文件下的工作目录路径
print('4',os.path.abspath('..'))#获取当前工作的父目录 !注意是父目录路径
print('5',os.path.abspath(os.curdir)) #获取当前工作目录路径
print(os.path.join(os.path.abspath('.'), 'code.png', ))
os 删除文件
#_*_ encoding: utf-8 _*_ @author: ty hery 2019/9/14
import os
os.remove('aa.txt')
os.unlink('filename')