Python获取指定目录下所有文件及文件夹的方法

洛溪
洛溪
发布时间:2026-10-13 | 5人浏览过
原创

本文介绍在Python中如何获取指定目录下的所有文件和文件夹。通过os.chdir修改路径,利用os.listdir或os.scandir列出内容,并使用os.path.isdir或file.is_dir区分文件与文件夹。示例展示了统计非文件夹文件数量及包含特定关键词(如python)的文件,最后通过正则表达式实现不区分大小写的匹配。

修改Python运行路径与路径连接方式

首先需要修改Python程序的运行路径,以便后续操作针对目标目录进行。


import os
os.chdir('C:/Users/86177/Desktop')
os.chdir(r'C:\Users\86177\Desktop') 
os.chdir('C:\\Users\\86177\\Desktop') 

在Python中,路径连接主要有三种方式:使用正斜杠'/'、反斜杠'\',或者使用原始字符串r''来避免转义字符的问题。

获取当前程序运行路径

要获取当前Python程序运行的路径,可以使用相关系统模块函数。


import os
print(os.getced())

执行上述操作后,输出结果通常为'C:\Users\86177\Desktop',这表示当前程序所在的工作目录路径。

Python自动路径连接与路径类型

Python提供了自动路径连接的功能,可以方便地组合不同部分的路径字符串。


import os
os.path.join('Myprojects', 'AI')

在Windows系统下,使用路径连接函数处理'Myprojects'和'AI'时,输出结果为'Myprojects\AI'。

理解绝对路径和相对路径的区别对于文件操作至关重要。绝对路径包含从根目录开始的完整路径,而相对路径是相对于当前工作目录的路径。


'C:\\Users\\86177\\Desktop' #绝对路径
'./practice' #相对路径

项目文件管理与相对路径建议

建议在开发项目时新建一个文件夹,将所有.py文件集中存放,并优先使用相对路径来读取数据,这样能提高代码的可移植性。

列出当前目录下的所有内容

若要列出当前程序文件夹下的所有内容,可以使用特定的列表函数。


import os
os.listdir()

该函数默认返回一个包含所有文件和文件夹名称的列表,其功能类似于全局方法dir(),可以查看目录下的全部内容。

判断文件与文件夹的方法

在获取列表后,需要判断每个条目是文件还是文件夹。


import os
files = os.listdir()
for file in files:
 print(file, os.path.isdir(file))

遍历列表并判断的结果输出格式为:文件夹名称,以及布尔值False(表示不是文件夹,即文件)或True(表示是文件夹)。

推荐的目录遍历使用方式

推荐使用更现代和高效的方式来遍历目录,以便获取更详细的信息。


import os
for file in os.scandir():
 print(file.name, file.path, file.is_dir())

使用推荐方式的结果输出包括:文件夹或文件的名称、完整路径以及判断其是否为文件夹的布尔值。

综合应用:查找特定文件

结合上述知识,我们可以进行综合应用,编写一个完整的Python程序来处理目录内容。

假设有一个示例文件夹,其内容如下所示,我们的任务是编写程序完成以下要求:

(1)找出当前目录下所有非文件夹的文件。

(2)统计其中文件名包含'python'单词的文件数量。

(3)在进行匹配时不区分大小写,即同时包括大写和小写形式。

(4)最终输出符合条件的文件数量。

参考实现代码如下:


import os 
os.chdir(r'D:\python_major\auto_office1')
ls_file = []
ls_dir = []
for file in os.scandir():
 if file.is_dir():
  ls_dir.append(file.name)
 else:
  ls_file.append(file.name)
print("文件夹的总量是{},\n文件为别为{}".format(len(ls_dir),ls_dir))
print('\n{}\n'.format('-'*30))
print("非文件夹的文件总量是{},\n文件为别为{}".format(len(ls_file),ls_file))
print('\n{}\n'.format('-'*30))
ls_python = []
for name in ls_file:
 if ('python' in name) or('Python'in name):
  ls_python.append(name)
print('含有python单词的文件数量有{}个,\n文件分别为{}'.format(len(ls_python),ls_python))

运行上述代码后的输出结果如下:

扩展:不区分大小写的文件匹配

扩展延伸(选读)部分探讨了更复杂的情况。

如果对'Python'不区分大小写的理解扩展为:只要组成'python'这个单词的字母大小写任意组合即可,例如Python、pYTHON或PYthon等,那么需要更灵活的筛选方式。

为此,我们在示例文件夹中增加几个含有不同大小写'python'的文件,具体列表如下:

如果继续使用之前的简单字符串匹配方式会显得笨重,推荐使用re库(正则表达式库,专门处理字符串数据)。下面代码是基于以上逻辑的改进版本:


import re
ls_name = []
for name in ls_file:
 pat = '.*python.*'
 match = re.match(pat,name,re.I)
 #re.I代表不区分大小写
 try:
  ls_name.append(match.group())
 except:
  pass

print('含有python单词的文件数量有{}个,\n文件分别为{}'.format(len(ls_name),ls_name))

如果对re库感兴趣可以自学,这里仅作抛砖引玉。最终结果输出如下:

总结

总结部分回顾全文要点。

以上介绍了Python在指定目录下查找并输出所有文件及文件夹的方法,希望对大家有所帮助。如果大家有任何疑问请留言,小编会及时回复。感谢大家对本站的支持!如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表