首页 > 编程语言 >Python中列出目录中的文件的五种方法

Python中列出目录中的文件的五种方法

时间:2022-12-10 11:05:27浏览次数:52  
标签:文件 listdir Python glob 五种 import os 列出

1. 引言

文件和目录相关操作是软件工程师必备的基本技能。 我不是说将一个文件复制到Windows文件资源管理器上的另一个文件夹中。 我是说使用代码来进行自动化批量处理操作。

今天,我们将深入探讨一个具体问题:

如何根据需要列出特定目录下的所有文件名?

我将介绍5种用Python实现的方法。不同的方法适用于不同的使用场景。

2. 使用os.listdir()

使用Python中的os模块下的方法listdir()是一个不错的选择,样例如下:

>>> import os
>>> os.listdir()

上面的代码将打印当前路径下所有文件和目录的名称。 如果我们想基于特定路径来打印结果,只需传递给函数​​os.listdir()​​ 相应的参数,举例如下:

>>> os.listdir(myPath)

如果我们只想打印所有文件不包含目录,那么我们可以使用​​os.path.isfile() ​​来进行相应的过滤,如下:

>>> import os
>>> files = [f for f in os.listdir() if os.path.isfile(f)]

当然,对于目录,同样可以使用函数​​os.path.isdir() ​​进行过滤,代码如下:

import os
files = [f for f in os.listdir() if os.path.isdir(f)]

如果我们只需要特定类型的文件怎么办? 完全不用担心。Python为复杂场景提供了更多选择。

3. 使用os.walk()

os模块中还有另一个方法 ​​os.walk()​​ 。顾名思义,它可以一层一层地“遍历”目录树。当我们调用​​os.walk() ​​函数时,它将返回一个生成器。此时每次调用​​next() ​​方法生成下一个值时,它都会进入到一个layer ,结果是一个包含3个项的元组:​​(dirpath、dirname、filename)​​ 。

举例,如果要获取第二层中所有文件夹的名称,代码如下所示:

from os import walk

f = []
layer = 1
w = walk("/Users/zhao")
for (dirpath, dirnames, filenames) in w:
if layer == 2:
f.extend(dirnames)
break
layer += 1

4. 在Glob模块中使用正则表达式

有时我们不想获取所有文件的名称,而是希望精确获取特定类型文件的名称。 由于glob模块能够添加用于搜索的正则表达式,因此它将是我们进行此类操作的首选。

>>> import glob
>>> glob.glob("/sys/*.log")
上面的代码将列出以log 结尾的文件名。

5. 使用pathlib

从Python 3.4开始,有一个名为pathlib 的模块也很有用。 借助列表生成式的技巧,我们只需使用一行代码即可生成当前路径的所有文件名:

import pathlib

files = [f for f in pathlib.Path().iterdir() if f.is_file()]

令人奇怪的是,Path() 还附带了​​glob()​​ 函数。(无需在Python文件顶部显式导入glob模块)

import pathlib

files = [f for f in pathlib.Path().glob("/sys/*.log")]

6. 使用os.scandir()

经典的​​os.listdir()​​ 函数很直观,但对于包含大量文件的大型目录来说效率并不高。因此,Python 3.5引入了一个新的功能类似的函数​​os.scandir() ​​。 是的,有的同学可能已经猜到了。此函数将返回一个生成器,并不是所有名称的列表。在某些情况下,我们并不需要同时获取所有名称,此时会更有效。

>>> a=os.scandir()
>>> next(a)
<DirEntry 'test1.py'>
>>> next(a)
<DirEntry 'test2.py'>

7. 总结

本文重点介绍了在Python中如何列出目录中的文件的五种方法,并针对每种方法给出了相应的代码样例。

您学废了嘛?

标签:文件,listdir,Python,glob,五种,import,os,列出
From: https://blog.51cto.com/u_15506603/5927296

相关文章

  • python 文件路径
    获取项目的的绝对路径(完整路径)背景:当项目下引用的模块较多时,可通过全局文件路径管理项目importosdefget_root_path():cwd=os.path.abspath(os.path.dirnam......
  • 极客编程python入门-匿名函数
    当我们在传入函数时,有些时候,不需要显式地定义函数,直接传入匿名函数更方便。在Python中,对匿名函数提供了有限支持。>>>list(map(lambdax:x*x,[1,2,3,4,5,6,7,8......
  • Python中星号的五种用法
    1.引言星号​​*​​往往被称为乘法运算符,是所有程序中最为常用的运算符号之一,在Python中,星号还有很多隐藏的强大功能。本文将用最容易理解的例子来解释星号*的五个使......
  • Python BeautifulSoup4
    What'sbeautifulsoup4?BeautifulSoup4isaPythonlibraryforextractingdatafromHTMLandXMLfiles.Itprovidesasimple,powerful,andflexibleAPIfornav......
  • Python requests
    textvscontentinrequests.models.ResponseInthePythonrequestslibrary,theResponseobjecthastwoattributescalledtextandcontent.Thetextattribut......
  • 华为机试真题 Python 实现【星际篮球争霸赛】【2022.11 Q4 新题】
    OverridetheentrypointofanimageIntroducedinGitLabandGitLabRunner9.4.Readmoreaboutthe extendedconfigurationoptions.Beforeexplainingtheav......
  • 彻底理解Python中浅拷贝和深拷贝的区别
    OverridetheentrypointofanimageIntroducedinGitLabandGitLabRunner9.4.Readmoreaboutthe extendedconfigurationoptions.Beforeexplainingtheav......
  • python之执行shell命令
    python执行shell命令,且执行完后将shell端的输出返回subprocessimportsubprocess#要执行的命令command="ls-l"#执行命令,并获取输出output=subprocess.run(......
  • python环境安装
    一、软件下载Anaconda3-2019.10-Windows-x86_64.exe     (python3.7)https://www.anaconda.com/distribution/#download-sectionpycharm-professional-2019.3......
  • Python中的Apriori关联算法-市场购物篮分析
    OverridetheentrypointofanimageIntroducedinGitLabandGitLabRunner9.4.Readmoreaboutthe extendedconfigurationoptions.Beforeexplainingtheav......