pythonospathwalk
本文采用os.walk()和os.listdir()两种方法,获取指定文件夹下的文件名。
一、os.walk()
模块os中的walk()函数可以遍历文件夹下所有的文件。
[python] view plain
os.walk(top, topdown=Ture, onerror=None, followlinks=False)
该函数可以得到一个三元tupple(dirpath, dirnames, filenames).
参数含义:
dirpath:string,代表目录的路径;
dirnames:list,包含了当前dirpath路径下所有的子目录名字(不包含目录路径);
filenames:list,包含了当前dirpath路径下所有的非目录子文件的名字(不包含目录路径)。
注意,dirnames和filenames均不包含路径信息,如需完整路径,可使用os.path.join(dirpath, dirnames)
下面给出代码;
[python] view plain
# -*- coding: utf-8 -*-
import os
def file_name(file_dir):
for root, dirs, files in os.walk(file_dir):
print(root) #当前目录路径
print(dirs) #当前路径下所有子目录
print(files) #当前路径下所有非目录子文件
当需要特定类型的文件时,代码如下:
[python] view plain
# -*- coding: utf-8 -*-
import os
def file_name(file_dir):
L=[]
for root, dirs, files in os.walk(file_dir):
for file in files:
if os.path.splitext(file)[1] == '.jpeg':
L.append(os.path.join(root, file))
return L
其中os.path.splitext()函数将路径拆分为文件名+扩展名,例如os.path.splitext(“E:/lena.jpg”)将得到”E:/lena“+".jpg"。
二、os.listdir()
os.listdir()函数得到的是仅当前路径下的文件名,不包括子目录中的文件,所有需要使用递归的方法得到全部文件名。
直接给出代码,函数将返回类型为‘.jpeg’个文件名:
[python] view plain
# -*- coding: utf-8 -*-
import os
def listdir(path, list_name):
for file in os.listdir(path):
file_path = os.path.join(path, file)
if os.path.isdir(file_path):
listdir(file_path, list_name)
elif os.path.splitext(file_path)[1]=='.jpeg':
list_name.append(file_path)
Ⅱ Python中如何遍历指定目录下的所有文件
例如:在C:\TDDOWNLOAD目录下有a.txt、b.txt两个文件,另有\sub1子文件夹,C:\TDDOWNLOAD\sub1下又有c.txt、d.txt两个文件。
1. os.walk
os.walk()返回一个三元素的tuple:当前路径、子文件夹名称、文件列表。
>>> import os
>>> def fun( path ):
... for root, dirs, files in os.walk( path ):
... for fn in files:
... print root, fn
...
>>> fun( r'C:\TDDOWNLOAD' )
C:\TDDOWNLOAD a.txt
C:\TDDOWNLOAD b.txt
C:\TDDOWNLOAD\sub1 c.txt
C:\TDDOWNLOAD\sub1 d.txt
>>>
2. glob.glob
glob.glob()只接受一个参数,这个参数既代有路径,又代有匹配模式,返回值为一个列表。注意,glob.glob()无法直接穿透子文件夹,需要自己处理:
>>> def fun( path ):
... for fn in glob.glob( path + os.sep + '*' ): # '*'代表匹配所有文件
... if os.path.isdir( fn ): # 如果结果为文件夹
... fun( fn ) # 递归
... else:
... print fn
...
>>> fun( r'C:\TDDOWNLOAD' )
C:\TDDOWNLOAD\a.txt
C:\TDDOWNLOAD\b.txt
C:\TDDOWNLOAD\sub1\c.txt
C:\TDDOWNLOAD\sub1\d.txt
>>>
'*'为匹配模式,代表匹配所有文件,只有这样才能将子文件夹查出来,以便递归深入,探查下一层的文件。
Ⅲ Python中os模块提供的与目录相关的函数有哪些呢
答案正确。以下是这些函数的具体说明:
os.getcwd():获取当前工作目录的路径名。
os.listdir(path):列出指定目录下的所有文件和子目录(不包含 . 和 .. 目录)。
os.mkdir(path[, mode]):创建一个新目录,其中 path 参数是要创建的目录路径名,mode 参数是可选的,指定目录权限,默认为 0777。
os.makedirs(path1/path2…[, mode]):递归创建多层目录结构,其中 path1/path2… 参数是要创建的目录路径名,在这个路径下逐层创建目录,并且可以递归创建多层带握目录,mode 参数是可选的,指定目录权限,默认为 0777。
os.rmdir(path):删除指定的目录,前提是这个目录必须为空,否则无法删除。
os.removedirs(path1/path2…):递归删除指定的目录及其中的所有空目录,其中 path1/path2… 参数是要删除的目录路径名,在递归删除过程中,若某个目录不为空,则不会被删除。
os.chdir(path):改变当前工作目录,其中 path 参数表示要切换的目录路径名。
os.walk(top[, topdown[, onerror]]):以目录树形式遍历指定目录下的所有文件和子目录,并返回一个三元组 (dirpath, dirnames, filenames),其中 dirpath 表示当前目录路径,dirnames 是当前目录下的所有子目录名,filenames 是当前目录下的所有非目录文件名。当 topdown 参数为 True 时,表示先遍历一级目录,再判断是否需要递归遍历其它子目录,默认值为 True;当 onerror 参数不为 None 时,表示如果在遍历目录树时遇到错误是否抛出异常(否则该错误直接被忽略),onerror 参数需要传入一个函数,接受三个参数,分别是出现错误的根目录、错误对象 Exception 和 traceback 对象。
以上是 os 模块中的蠢正庆一些常用目录相关函数。需要注意的是,对于一些有进行文件和目录操作的函数,一定要清枣注意操作的权限和路径的正确性,避免在操作时发生不必要的错误。
Ⅳ python删除目录下的空文件夹
import os
def del_emp_dir(path):
for (root, dirs, files) in os.walk(path):
for item in dirs:
dir = os.path.join(root, item)
try:
os.rmdir(dir) #os.rmdir() 方法用于删除指定路径的目录。仅当这文件夹是空的才可以, 否则, 抛出OSError。
print(dir)
except Exception as e:
print('Exception',e)
if __name__ == '__main__':
dir = r'F:\test'
del_emp_dir(dir)
Ⅳ python怎么获取路径下的所有文件夹名字
import os
os.chdir("D:\\python") #设置需要查看的目录
a = [x for x in os.listdir() if os.path.isdir(x)]
列表a里面就是当前目录下的文件夹名字
Ⅵ 如何获取目录下的文件数(一行Python)
如果想把该目录下所有的文件都统计出来,包括子目录、子目录的子目录。。。
可以使用os.walk来找出目录下所有的文件
importos
printsum([len(x)for_,_,xinos.walk(os.path.dirname("test"))])
#test是目录名
os.walk会递归遍历指定目录下的文件,返回值分别为当前文件夹完整路径,当前文件夹中的文件夹和文件夹中的文件。我们只需要文件,所以其他的都不取出来了,直接使用"_"占位就行了。
如果只是想统计出当前目录下的文件,不包括子目录的。就使用os.listdir,只统计是文件的个数:
len([xforxinos.listdir(os.path.dirname(__file__))ifos.path.isfile(x)])
Ⅶ python,如何遍历一个目录,输出所有文件名
importos
defiterbrowse(path):
forhome,dirs,filesinos.walk(path):
forfilenameinfiles:
yieldos.path.join(home,filename)
forfullnameiniterbrowse("/home/bruce"):
printfullname