os模块遍历文件

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')
posted @ 2021-04-03 21:19  ty1539  阅读(208)  评论(0编辑  收藏  举报