zoukankan      html  css  js  c++  java
  • Python学习笔记:列出目录下所有文件或目录

    一、背景

    实现某个目录下所有文件(包含子目录中的文件)的列出,可以使用 Python 实现。

    二、实现

    • 方法一
    # 修改工作目录
    import os
    os.chdir(r'C:UsersHiderDesktop')
    
    # 定义函数
    def list_all_files(rootdir):
        import os
        _files = []
    	# 列出文件夹下所有的目录与文件
        list = os.listdir(rootdir)
        for i in range(0, len(list)):
    		# 构造路径
            path = os.path.join(rootdir, list[i])
    		# 判断路径是否为文件目录或者文件
    		# 如果是目录则继续递归
            if os.path.isdir(path):
                _files.extend(list_all_files(path))
            if os.path.isfile(path):
                _files.append(path)
        return _files
    
    # 执行
    dir = r'C:UsersHiderDesktoppython' # 目录地址
    list_all_files(dir)
    
    # 结果
    ```
    ['C:\Users\Hider\Desktop\python\dataminingguide.pdf',
     'C:\Users\Hider\Desktop\python\kaggle-titanic-learning.py',
     'C:\Users\Hider\Desktop\python\nba.txt',
     'C:\Users\Hider\Desktop\python\python-pandas-learning.py',
     'C:\Users\Hider\Desktop\python\python_algorithm_learning.py',
     'C:\Users\Hider\Desktop\python\Python编程:从入门到实践.pdf',
     'C:\Users\Hider\Desktop\python\《Python数据挖掘入门与实践》.pdf',
     'C:\Users\Hider\Desktop\python\大数定理.py',
     'C:\Users\Hider\Desktop\python\技术学习.sql',
     'C:\Users\Hider\Desktop\python\泰坦尼克\gender_submission.csv',
     'C:\Users\Hider\Desktop\python\泰坦尼克\test.csv',
     'C:\Users\Hider\Desktop\python\泰坦尼克\titanic.zip',
     'C:\Users\Hider\Desktop\python\鲍鱼\abalone.csv',
     'C:\Users\Hider\Desktop\python\鲍鱼\abalone.data',
     'C:\Users\Hider\Desktop\python\鲍鱼\abalone.names',
     'C:\Users\Hider\Desktop\python\鲍鱼\abalone.txt',
     'C:\Users\Hider\Desktop\python\鲍鱼\dim_sex.xlsx',
     'C:\Users\Hider\Desktop\python\鲍鱼\鲍鱼数据集.md']
    
    ```
    

    使用递归的方式列出目录及其子目录下的文件。

    os.listdir('dir') # 列出当前目录下的所有文件
    os.path.isdir('dir') # 判断是否目录,返回布尔值,不存在也返回False
    os.path.isfile('dir') # 判断是否文件
    os.path.join('dir', 'dir2') # 连接路径,返回全路径
    
    • 方法二
    import os # 系统
    path = r'C:UsersHiderDesktoppython'
    
    # 定义函数
    def print_files(path):
        lsdir = os.listdir(path)
        dirs = [i for i in lsdir if os.path.isdir(os.path.join(path, i))]
        files = [i for i in lsdir if os.path.isfile(os.path.join(path, i))]
        if files:
            for f in files:
                print(os.path.join(path, f))
        if dirs:
            for d in dirs:
                print_files(os.path.join(path, d)) # 递归查找
        # return 0
    
    # 执行
    print_files(path)
    

    代码执行的逻辑思路:

    (1)先列出路径下的所有文件;

    (2)过滤目录;

    (3)过滤文件;

    (4)判断目录下是否有文件,若有就打印出该文件;

    (5)判断目录下是否有子目录,若有就通过递归再遍历子目录下的文件或者目录。

    参考链接1:利用python列出当前目录下的所有文件

    参考链接2:python递归列文件_python递归列出目录及其子目录下所有文件

    参考链接3:Python:打印某个路径下的所有文件

  • 相关阅读:
    python函数续
    模拟数据库查询操作
    文件处理
    字符编码
    python函数
    ACM-ICPC 2018 南京赛区网络预赛Skr
    bzoj3676: [Apio2014]回文串 pam
    Wannafly挑战赛23B游戏
    bzoj4804: 欧拉心算 欧拉筛
    bzoj3884: 上帝与集合的正确用法 扩展欧拉定理
  • 原文地址:https://www.cnblogs.com/hider/p/14692082.html
Copyright © 2011-2022 走看看