Python 获取指定文件夹下的目录和文件的实现
经常有需要扫描目录,对文件做批量处理的需求,所以对目录处理这块做了下学习和总结。Python中扫描目录有两种方法:os.listdir和os.walk。
一、os.listdir方法
os.listdir()方法用于返回指定的目录下包含的文件或子目录的名字的列表。这个列表以字母顺序。其得到的是仅当前路径下的文件名,不包括子目录中的文件,如果需要得到所有文件需要递归。它也不包括'.'和'..'即使它在目录中。
语法格式如下:
os.listdir(path)
实例代码
deflist_dir(file_dir):
'''
通过listdir得到的是仅当前路径下的文件名,不包括子目录中的文件,如果需要得到所有文件需要递归
'''
print'\n\n<><><><><><>listdir<><><><><><>'
print"currentdir:{0}".format(file_dir)
dir_list=os.listdir(file_dir)
forcur_fileindir_list:
#获取文件的绝对路径
path=os.path.join(file_dir,cur_file)
ifos.path.isfile(path):#判断是否是文件还是目录需要用绝对路径
print"{0}:isfile!".format(cur_file)
ifos.path.isdir(path):
print"{0}:isdir!".format(cur_file)
list_dir(path)#递归子目录
二、os.walk方法
os.walk()方法用于通过在目录树中游走输出在目录中的文件名,向上或者向下。是一个简单易用的文件、目录遍历器,可以帮助我们高效的处理文件、目录方面的事情。
语法格式如下:
os.walk(top[,topdown=True[,onerror=None[,followlinks=False]]])
方法参数说明:
- top:要遍历的目录的路径
- topdown:可选,如果为True,则优先遍历top目录,以及top目录下的每一个子目录,否则优先遍历top的子目录,默认为True
- onerror:可选,需要一个callable对象,当walk异常时调用
- followlinks:可选,如果为True,则会遍历目录下的快捷方式(linux下是symboliclink)实际所指的目录,默认为False
- args:包含那些没有'-'或'--'的参数列表
返回值:三元组(root,dirs,files)
- root:所指的是当前正在遍历的目录的地址
- dirs:当前文件夹中所有目录名字的list(不包括子目录)
- files:当前文件夹中所有的文件(不包括子目录中的文件)
实例
defwork_dir(file_dir):
print'\n\n<><><><><>workdir<><><><><>'
forroot,dirs,filesinos.walk(file_dir):
print'\n========================================'
print"root:{0}".format(root)
print"dirs:{0}".format(dirs)
print"files:{0}".format(files)
forfileinfiles:
try:
print'-----------------------------------'
file_name=os.path.splitext(file)[0]
file_suffix=os.path.splitext(file)[1]
file_path=os.path.join(root,file)
file_abs_path=os.path.abspath(file)
file_parent=os.path.dirname(file_path)
print"file:{0}".format(file)
print"file_name:{0}".format(file_name)
print"file_suffix:{0}".format(file_suffix)
print"file_path:{0}".format(file_path)
print"file_abs_path:{0}".format(file_abs_path)
print"file_parent:{0}".format(file_parent)
exceptException,e:
print"Exception",e
三、其他跟文件相关的常用方法
os.path.splitext():分离文件名和扩展名
file="file_test.txt" file_name=os.path.splitext(file)[0]#输出:file_test file_suffix=os.path.splitext(file)[1]#输出:.txt
os.path.exists():判断文件或目录是否存在
os.path.isfile():判断是否是文件
os.path.isdir():判断是否是目录
os.path.dirname():获取当前文件所在的目录,即父目录
os.makedirs():创建多级目录
os.mkdir():创建单级目录
os.path.getsize():获取文件大小
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。