Python获取指定目录下所有文件及文件夹的方法
本文介绍在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在指定目录下查找并输出所有文件及文件夹的方法,希望对大家有所帮助。如果大家有任何疑问请留言,小编会及时回复。感谢大家对本站的支持!如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









