【Python】获取指定目录下的文件夹和文件

这篇具有很好参考价值的文章主要介绍了【Python】获取指定目录下的文件夹和文件。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

【Python】获取指定目录下的文件夹和文件

1. 介绍

我们经常会有对文件做批量处理的需求,获取指定目录下的文件夹和文件(有时需要获取所有文件,即子目录下的文件也需要获取)。Python 中扫描目录有两种方法:

  • os.listdir()
  • os.walk()

2. 举例说明

建立项目框架如下:

python读取指定路径文件,# Python,使用说明,python,开发语言
其中,

  • test:项目文件夹名称,含有 aa子文件夹main.py
    • aa:文件夹,含有 bb子文件夹cc子文件夹 以及 一个 dd.txt文件
      • bb:文件夹,含有一个 txt 文件
        • ff.txt:txt文件
      • cc:空文件夹
      • dd.txt:txt文件夹
    • main.py:进行代码举例使用

2.1 os.listdir()

os.listdir() 方法用于返回指定的目录下包含的文件或子目录的名字的列表。

  • 这个列表以字母顺序。其得到的是仅当前路径下的文件名,不包括子目录中的文件;
  • 如果需要得到所有文件需要递归。 它也不包括 ‘.’ 和 ‘…’ 即使它在目录中。
2.1.1 API
import os
os.listdir(path)
2.1.2 main.py 代码如下,时
import os

def list_dir(file_dir):
    '''
        通过 listdir 得到的是仅当前路径下的文件名,不包括子目录中的文件,如果需要得到所有文件需要递归
    '''
    dir_list = os.listdir(file_dir)
    result_list = []
    for cur_file in dir_list:
        # 获取文件的绝对路径
        path = os.path.join(file_dir, cur_file)
        if os.path.isfile(path): # 判断是否是文件还是目录需要用绝对路径
            result_list.append(path)
        if os.path.isdir(path):
            result_list += list_dir(path) # 递归子目录
    return result_list

path = 'aa'
list1 = os.listdir(path)
list2 = list_dir(path)

print(list1)
print(list2)

输出如下:

list1: ['bb', 'cc', 'dd.txt', 'ee.jpg']
list2: ['aa/bb/ff.txt', 'aa/dd.txt', 'aa/ee.jpg']

2.2 os.walk()

os.walk() 方法用于通过在目录树中游走输出在目录中的文件名,向上或者向下。是一个简单易用的文件、目录遍历器,可以帮助我们高效的处理文件、目录方面的事情。

2.2.1 API
import os
os.walk(top[, topdown=True[, onerror=None[, followlinks=False]]])

方法参数说明

  • top:要遍历的目录的路径
  • topdown:可选,如果为 True,则优先遍历 top 目录,以及 top 目录下的每一个子目录,否则优先遍历 top 的子目录,默认为 True
  • onerror: 可选, 需要一个 callable 对象,当 walk 异常时调用
  • followlinks:可选, 如果为 True,则会遍历目录下的快捷方式(linux 下是 symbolic link)实际所指的目录,默认为 False
  • args:包含那些没有 ‘-’ 或 ‘–’ 的参数列表

返回值: 三元组 (root, dirs, files)

  • root :所指的是当前正在遍历的目录的地址
  • dirs :当前文件夹中所有目录名字的 list (不包括子目录)
  • files :当前文件夹中所有的文件 (不包括子目录中的文件)
2.2.2 main.py 代码如下,时
import os

path = 'aa'
a, b, c = os.walk(path)

print(a)
print(b)
print(c)

输出如下:

a: ('aa', ['bb', 'cc'], ['dd.txt', 'ee.jpg'])
b: ('aa/bb', [], ['ff.txt'])
c: ('aa/cc', [], [])
2.2.3 main.py 代码如下,时
import os
path = 'aa'
for root, dirs, files in os.walk(path):
    for name in files:
        print(os.path.join(root, name))
    for name in dirs:
        print(os.path.join(root, name))

输出如下:文章来源地址https://www.toymoban.com/news/detail-582254.html

aa/dd.txt
aa/ee.jpg
aa/nn
aa/bb
aa/cc
aa/bb/ff.txt

3. 其他常用方法

  • os.path.splitext():分离文件名和扩展名
import os
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():获取文件大小

到了这里,关于【Python】获取指定目录下的文件夹和文件的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • python中针对同一目录或不同目录下的其他文件或文件夹的import用法

    在Python中, import 用于导入其他文件或模块的内容,让你可以在当前文件中使用这些内容。下面我将介绍如何使用 import 来导入同一目录或不同目录下的文件或文件夹。 1. 导入同一目录下的文件或模块: 如果你要导入与当前文件位于同一目录下的文件或模块,可以直接

    2024年02月14日
    浏览(14)
  • Java获取指定文件夹下目录下所有视频并复制到另一个地方
  • Unity Android 之 读取下载获取移动端 sdcard 路径下的指定文件夹的所有图片的几种方式的简单整理

    Unity Android 之 读取下载获取移动端 sdcard 路径下的指定文件夹的所有图片的几种方式的简单整理

    目录 Unity Android 之 读取下载获取移动端 sdcard 路径下的指定文件夹的所有图片的几种方式的简单整理 一、简单介绍 二、实现原理 三、注意事项 四、简单实现步骤 五、关键代码 附录: 一、不同平台使用宏区分路径加载 二、Unity3D中的资源路径 三、Unity3D各平台路径(包括手

    2024年01月19日
    浏览(77)
  • python读取文件夹下的文件以及子文件夹中文件

    os.listdir() 读取目标文件夹下的文件名和子文件夹名,不会递归读取子文件夹下 方法一: root, dirs, files = os.walk() 递归读取文件夹和 子文件夹下所有文件 。方法二:也可以用os.listdir(),判断是文件夹再os.listdir()自己写一个递归程序 示例

    2024年02月16日
    浏览(47)
  • Python-拷贝文件和文件夹到指定的文件夹

    之前使用windows批处理命令,感觉语法太不友好,还需要传很多参数,用起来很麻烦,最后还是用Python来实现。 网上太多的教程,真的不知所云,有点太麻烦了,拷贝之前先删除,也懒得判断。 shutil.copyfile 顾名思义 拷贝的是文件 shutil.copytree 顾名思义 拷贝的是文件夹 这样使

    2024年02月11日
    浏览(16)
  • python 读取文件夹下子文件夹下的csv数据表

    可以使用 Python 中的  os  和  csv  模块来读取文件夹下的文件夹的 csv 数据。具体的步骤如下: 导入  os  和  csv  模块。 使用  os  模块的  listdir  函数列举出目标文件夹下的所有子文件夹的名称。 对于每个子文件夹,列举出其中的所有 .csv 文件的名称,并逐一读取 csv

    2024年02月11日
    浏览(49)
  • python跨文件夹调用别的文件夹下的py文件或参数方式

    python跨文件夹调用别的文件夹下的py文件或参数方式

    目录 摘要: 第一章   运行另一个py文件 (1)在file_A.py中运行file_B.py文件,注意这里是运行,不是引用 (2)file_B.py使用file_A.py传递的参数 (3) 引用另一个py文件中的变量或者方法 第二章 python调用自己写的py文件 (1)同一个目录下的文件 (2)不同目录下的文件 (3)多

    2024年02月08日
    浏览(49)
  • Python如何引用其他文件夹下的py文件

    Python引用其他模块的函数使用的语法是: from 模块名 import 函数名 如果将my_abs()函数定义保存为abstest.py文件,那么在该文件所在目录下,启动解释器,输入from abstest import my_abs,就可以执行my_abs函数。 那么,如何引用其他文件夹下的py文件 若要引用的包与文件不在同一个文件夹

    2024年02月16日
    浏览(48)
  • cp命令 复制多个目录/文件夹下文件到指定目录

    可以使用cp命令的通配符和递归选项来复制多个目录下多个文件夹下的文件到指定目录。 如果目标目录不存在,可以使用 mkdir -p命令来创建目录。 -p 选项表示递归创建目录,如果目录已经存在,则不会报错。 例如,以下命令会复制 /path/to/dir1和 /path/to/dir2 下的所有子目录中的

    2024年02月12日
    浏览(53)
  • python遍历目录(文件夹)os.walk

    python遍历目录(文件夹)os.walk

    打印:

    2024年02月08日
    浏览(12)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包