首页 > 编程问答 >目录中所有文件的列表?

目录中所有文件的列表?

时间:2024-07-26 15:22:42浏览次数:5  
标签:python pathlib

任何人都可以帮我创建一个函数,该函数将使用 pathlib library 创建某个目录下所有文件的列表吗?

这里,我有一个:

enter image description here

我有

  • c:\desktop\test\A\A.txt

  • c:\desktop\test\B\B_1\B.txt

  • c:\desktop\test\123.txt

我希望有一个列表它将具有上面的路径,但我的代码返回一个嵌套列表。

这是我的代码:

from pathlib import Path

def searching_all_files(directory: Path):   
    file_list = [] # A list for storing files existing in directories

    for x in directory.iterdir():
        if x.is_file():

           file_list.append(x)
        else:

           file_list.append(searching_all_files(directory/x))

    return file_list


p = Path('C:\\Users\\akrio\\Desktop\\Test')

print(searching_all_files(p))

希望任何人都可以纠正我。


你的代码返回嵌套列表,因为你在 else 语句中递归调用 searching_all_files 函数时,是将结果作为一个新列表附加到 file_list 中。

你可以通过使用 list.extend() 方法来代替 list.append() 方法来解决这个问题, list.extend() 方法可以将一个列表的元素追加到另一个列表中。

以下是修正后的代码:

from pathlib import Path

def searching_all_files(directory: Path):   
    file_list = [] # A list for storing files existing in directories

    for x in directory.iterdir():
        if x.is_file():
           file_list.append(x)
        else:
           # 使用 extend() 方法追加子目录中的文件列表
           file_list.extend(searching_all_files(directory/x))

    return file_list


p = Path('C:\\Users\\akrio\\Desktop\\Test')

print(searching_all_files(p))

这将打印出一个包含所有文件路径的扁平列表,而不会嵌套。

或者,你可以使用 Path.rglob() 方法来更简洁地实现相同的结果:

from pathlib import Path

def searching_all_files(directory: Path):
    return list(directory.rglob('*.*'))

p = Path('C:\\Users\\akrio\\Desktop\\Test')

print(searching_all_files(p))

这将返回一个包含目录下所有文件路径的列表,包括子目录中的文件。

标签:python,pathlib
From: 39909655

相关文章

  • 不使用 + 或 - 运算符 | 添加 2 个数字Python
    我一直在尝试编写逻辑,但测试用例失败。如何改进我的代码?代码:#Giventwointegersaandb,returnthesumofthetwointegerswithoutusingtheoperators+and-.a=-1b=1min_val=min(a,b)max_val=max(a,b)ifmin_val==max_val:pr......
  • python 中的智能 Cisco IOS 差异
    之前:hostnameFoo!interfaceGigabitEthernet1/1switchportmodetrunkswitchporttrunkallowedvlan10,20,30!interfaceGigabitEthernet1/2ipaddress192.0.2.1255.255.255.128noipproxy-arp!之后:hostnameFoo!interfaceGigabitEt......
  • 无法编译 Arduino ESP32 代码:.../python3: exec 格式错误
    昨天我使用MacOSArduinoIDE或VSCode编译Arduino草图没有任何问题。但今天什么也编译不了。我尝试在ArduinoIDE或带有Arduino扩展的VSCode中编译的任何草图都会出现此错误:fork/exec/Library/Frameworks/Python.framework/Versions/3.11/bin/python3:exec......
  • 用Python解析邮件日志
    我的任务有点困难。我有一个邮件日志,如:Oct315:30:18mail1postfix/lmtp[5369]:DB10242054:to=<XXXXX>,orig_to=<XXXXXX>,relay=ip[ip]:port,delay=1.4,delays=0.04/0/0.01/1.4,dsn=2.0.0,status=sent(2502.0.0fromMTA(smtp:[iP]:port):2502.0.0Ok:queueda......
  • Python,Pyinstaller打包含taichi模块的程序
    Python版本3.9、taichi版本1.7.1,pyinstaller版本6.9.0问题描述:正常Pyinstaller打包后报错[Taichi]version1.7.1,llvm15.0.1,commit0f143b2f,win,python3.9.19[Taichi]Startingonarch=x64Traceback(mostrecentcalllast):File"taichi\lang\_wrap_inspec......
  • Python,运行Yolo项目,报错AttributeError: ‘ImageDraw‘ object has no attribute ‘te
    Python3.9问题描述:其他电脑已经运行成功的Python,YOLO代码到我电脑上运行报错Traceback(mostrecentcalllast): File"C:\Users\Administrator\Desktop\20240725\识别项目\predict.py",line122,in<module>  frame=np.array(yolo.detect_image(frame)) Fil......
  • Python从零开始制做文字游戏(荒岛求生)
    文章目录前言开发游戏《荒岛求生》游戏大纲背景内容通关条件游戏过程探索荒岛购买物资休息总结代码开发定义变量当前代码引入背景故事当前代码循环问题解决:函数当前代码制作延时当前代码制作a函数(探索荒岛阶段)展示数......
  • 使用 Python 进行数据分析:入门指南
    使用Python进行数据分析:入门指南1.简介本指南将介绍如何使用Python进行数据分析,涵盖从数据加载到可视化分析的各个方面。2.必要的库NumPy:用于数值计算和数组操作。Pandas:用于数据处理和分析,提供DataFrame结构。Matplotlib:用于数据可视化,创建各种图表。Seab......
  • IT实战课堂计算机毕业设计源码精品基于Python的高校教育教材采购出入库进销存储信息管
    项目功能简介:《[含文档+PPT+源码等]精品基于Python的高校教育教材信息管理系统设计与实现》该项目含有源码、文档、PPT、配套开发软件、软件安装教程、项目发布教程、包运行成功以及课程答疑与微信售后交流群、送查重系统不限次数免费查重等福利!软件开发环境及开发工具:开......
  • 为什么我的 Python 脚本失败并出现 TypeError?
    我正在编写一个Python脚本,该脚本应该计算数字列表的总和。但是,当我运行代码时遇到TypeError这是一个最小的例子:numbers=[1,2,3,'4']total=sum(numbers)print(total)Theerrormessageis:TypeError:unsupportedoperandtype(s)for+:'int'and'str......