Python遍历文件夹的两种方法比较

模块os中的walk()函数可以遍历文件夹下所有的文件。

[python]  view plain  copy
  1. os.walk(top, topdown=Ture, οnerrοr=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  copy
  1. # -*- coding: utf-8 -*-   
  2.   
  3. import os  
  4.   
  5. def file_name(file_dir):   
  6.     for root, dirs, files in os.walk(file_dir):  
  7.         print(root) #当前目录路径  
  8.         print(dirs) #当前路径下所有子目录  
  9.         print(files) #当前路径下所有非目录子文件  

当需要特定类型的文件时,代码如下:

[python]  view plain  copy
  1. # -*- coding: utf-8 -*-   
  2.   
  3. import os  
  4.   
  5. def file_name(file_dir):   
  6.     L=[]   
  7.     for root, dirs, files in os.walk(file_dir):  
  8.         for file in files:  
  9.             if os.path.splitext(file)[1] == '.jpeg':  
  10.                 L.append(os.path.join(root, file))  
  11.     return L  

os.listdir()函数得到的是仅当前路径下的文件名,不包括子目录中的文件,所有需要使用递归的方法得到全部文件名。


直接给出代码,函数将返回类型为‘.jpeg’个文件名:

[python]  view plain  copy
  1. # -*- coding: utf-8 -*-  
  2. import os  
  3.   
  4. def listdir(path, list_name):  
  5.     for file in os.listdir(path):  
  6.         file_path = os.path.join(path, file)  
  7.         if os.path.isdir(file_path):  
  8.             listdir(file_path, list_name)  
  9.         elif os.path.splitext(file_path)[1]=='.jpeg':  
  10.             list_name.append(file_path)  


遍历文件夹是一个很常用的功能吧。这里分别用两种方法实现: 

    第一种:使用os.walk:

 
 
  1. # -*- coding: utf-8 -*- 
  2. import os 
  3. def Test1(rootDir): 
  4.     list_dirs = os.walk(rootDir) 
  5.     for root, dirs, files in list_dirs: 
  6.         for d in dirs: 
  7.             print os.path.join(root, d)      
  8.         for f in files: 
  9.             print os.path.join(root, f) 

    第二种:使用os.listdir:

 
 
  1. # -*- coding: utf-8 -*- 
  2. import os 
  3. def Test2(rootDir): 
  4.     for lists in os.listdir(rootDir): 
  5.         path = os.path.join(rootDir, lists) 
  6.         print path 
  7.         if os.path.isdir(path): 
  8.             Test2(path) 

这两种到底有什么区别呢?

这里先建立一个测试目录E:\test,目录结构如下:

 
 
  1. E:\TEST 
  2. │--A 
  3. │  │--A-A 
  4. │  │  │--A-A-A.txt 
  5. │  │--A-B.txt 
  6. │  │--A-C 
  7. │  │  │--A-B-A.txt 
  8. │  │--A-D.txt 
  9. │--B.txt 
  10. │--C 
  11. │  │--C-A.txt 
  12. │  │--C-B.txt 
  13. │--D.txt 
  14. │--E 

下面通过运行如下代码:

 
 
  1. Test1('E:\TEST'
  2. print '=======================================' 
  3. Test2('E:\TEST'

输出结果为:

 
 
  1. >>>  
  2. E:\TEST\A 
  3. E:\TEST\C 
  4. E:\TEST\E 
  5. E:\TEST\B.txt 
  6. E:\TEST\D.txt 
  7. E:\TEST\A\A-A 
  8. E:\TEST\A\A-C 
  9. E:\TEST\A\A-B.txt 
  10. E:\TEST\A\A-D.txt 
  11. E:\TEST\A\A-A\A-A-A.txt 
  12. E:\TEST\A\A-C\A-B-A.txt 
  13. E:\TEST\C\C-A.txt 
  14. E:\TEST\C\C-B.txt 
  15. ======================================= 
  16. E:\TEST\A 
  17. E:\TEST\A\A-A 
  18. E:\TEST\A\A-A\A-A-A.txt 
  19. E:\TEST\A\A-B.txt 
  20. E:\TEST\A\A-C 
  21. E:\TEST\A\A-C\A-B-A.txt 
  22. E:\TEST\A\A-D.txt 
  23. E:\TEST\B.txt 
  24. E:\TEST\C 
  25. E:\TEST\C\C-A.txt 
  26. E:\TEST\C\C-B.txt 
  27. E:\TEST\D.txt 
  28. E:\TEST\E 
  29. >>>  

可以看出,对于第一种方法,输出总是先文件夹后文件名的,对于第二种,则是按照目录树结构以及按照首字母排序进行输出的。

另外之前打印出的目录树其实就是通过对第二种方法进行稍微修改实现的,如下:

 
 
  1. def Test3(rootDir, level=1): 
  2.     if level==1print rootDir 
  3.     for lists in os.listdir(rootDir): 
  4.         path = os.path.join(rootDir, lists) 
  5.         print '│  '*(level-1)+'│--'+lists 
  6.         if os.path.isdir(path): 
  7.             Test3(path, level+1
Python是一种强大的编程语言,可以处理各种类型的数据。在Python中,我们可以使用一些库和模块来遍历文件夹和读取Excel文件。 要遍历文件夹,我们可以使用os模块。os模块提供了一些函数,可以获取目录中所有文件和子目录的名称。遍历文件夹时,我们首先需要指定要遍历文件夹路径,然后使用os.listdir()函数获取该文件夹中的所有文件名。 例如,以下代码展示如何使用Python在Windows操作系统中遍历文件夹: import os folder_path = r'C:\Users\myFolder' for file_name in os.listdir(folder_path): print(file_name) 上述代码将列出myFolder文件夹中的所有文件文件夹名称。 要读取Excel文件,我们需要使用一个名为“pandas”的库。pandas库提供了一些函数,可以让我们轻松读取和处理Excel文件中的数据。 例如,以下代码展示如何使用Python读取Excel文件: import pandas as pd excel_file_path = r'C:\Users\myFolder\myExcel.xlsx' df = pd.read_excel(excel_file_path) print(df) 上述代码中,我们使用pandas库中的read_excel()函数读取名为“myExcel.xlsx”的文件,并将其存储在一个称为“df”的变量中。然后,我们使用print()函数输出df中的内容。 通过将遍历文件夹和读取Excel文件的两个步骤结合起来,我们可以轻松地读取文件夹中的所有Excel文件。 例如,以下代码展示如何使用Python遍历文件夹并读取其中的Excel文件: import os import pandas as pd folder_path = r'C:\Users\myFolder' for file_name in os.listdir(folder_path): if file_name.endswith('.xlsx'): excel_file_path = os.path.join(folder_path, file_name) df = pd.read_excel(excel_file_path) print(df) 上述代码中,我们首先遍历名为“myFolder”的文件夹中的所有文件,仅读取文件名以“.xlsx”结尾的Excel文件。然后,我们使用pandas库中的read_excel()函数读取每个Excel文件,并使用print()函数输出其内容。 总之,Python是一种非常灵活和强大的编程语言,可以使用各种库和模块来处理各种类型的数据。通过使用os和pandas库,我们可以轻松地遍历文件夹和读取Excel文件
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值