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():获取文件大小
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。