python os.walk到一定级别[重复]

2024-01-15

我想构建一个程序,使用一些基本代码来读取文件夹并告诉我该文件夹中有多少文件。 目前我是这样做的:

import os

folders = ['Y:\\path1', 'Y:\\path2', 'Y:\\path3']
for stuff in folders:
    for root, dirs, files in os.walk(stuff, topdown=True):
        print("there are", len(files), "files in", root)

除非“主”文件夹中有多个文件夹,否则这种方法效果很好,因为由于文件夹/文件管理不善,它可能会返回一长串垃圾文件列表。所以我最多只想到第二层。例子:

Main Folder
---file_i_want
---file_i_want
---Sub_Folder
------file_i_want <--*
------file_i want <--*
------Sub_Folder_2
---------file_i_dont_want
---------file_i_dont_want

我知道如何只进入第一级breakdel dirs[:]取自这个帖子 https://stackoverflow.com/questions/4117588/non-recursive-os-walk and 还有这个帖子 https://stackoverflow.com/questions/229186/os-walk-without-digging-into-directories-below.

import os
import pandas as pd

folders = ['Y:\\path1', 'Y:\\path2', 'Y:\\path3']
for stuff in folders:
    for root, dirs, files in os.walk(stuff, topdown=True):
        print("there are", len(files), "files in", root)
        del dirs[:] # or a break here. does the same thing.

但无论我如何搜索,我都找不到如何深入两层的方法。我可能只是不理解其他帖子或其他什么?我在想类似的事情del dirs[:2]但无济于事。有人可以指导我或向我解释如何实现这一目标吗?


你可以这样做:

depth = 2

# [1] abspath() already acts as normpath() to remove trailing os.sep
#, and we need ensures trailing os.sep not exists to make slicing accurate. 
# [2] abspath() also make /../ and ////, "." get resolved even though os.walk can returns it literally.
# [3] expanduser() expands ~
# [4] expandvars() expands $HOME
# WARN: Don't use [3] expanduser and [4] expandvars if stuff contains arbitrary string out of your control.
#stuff = os.path.expanduser(os.path.expandvars(stuff)) # if trusted source
stuff = os.path.abspath(stuff)

for root,dirs,files in os.walk(stuff):
    if root[len(stuff):].count(os.sep) < depth:
        for f in files:
            print(os.path.join(root,f))

key is: if root[len(stuff):].count(os.sep) < depth

它删除了stuff from root,所以结果是相对于stuff。只需计算文件分隔符的数量即可。

深度就像findLinux 中的命令,即-maxdepth 0意味着什么都不做,-maxdepth 1仅扫描第一级文件,并且-maxdepth 2扫描文件包含子目录。

当然,它仍然会扫描完整的文件结构,但除非它非常深,否则就可以了。

另一种解决方案是仅使用os.listdir以最大递归级别递归(使用目录检查),但如果您不需要它,那就有点棘手了。由于这并不难,这里有一个实现:

def scanrec(root):
    rval = []

    def do_scan(start_dir,output,depth=0):
        for f in os.listdir(start_dir):
            ff = os.path.join(start_dir,f)
            if os.path.isdir(ff):
                if depth<2:
                    do_scan(ff,output,depth+1)
            else:
                output.append(ff)

    do_scan(root,rval,0)
    return rval

print(scanrec(stuff))  # prints the list of files not below 2 deep

Note: os.listdir and os.path.isfile执行2stat调用所以不是最佳的。在Python 3.5中,使用os.scandir可以避免双重调用。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

python os.walk到一定级别[重复] 的相关文章

  • 在PyGI中获取窗口句柄

    在我的程序中 我使用 PyGObject PyGI 和 GStreamer 在 GUI 中显示视频 该视频显示在Gtk DrawingArea因此我需要获取它的窗口句柄realize 信号处理程序 在 Linux 上 我使用以下方法获取该句
  • Flask中使用的路由装饰器是如何工作的

    我熟悉 Python 装饰器的基础知识 但是我不明白这个用于 Flask 路由的特定装饰器是如何工作的 以下是 Flask 网站上的代码片段 from flask import Flask escape request app Flask
  • Tkinter 菜单删除项

    如何删除任何菜单项 例如我想删除 播放 self menubar Menu self root self root config menu self menubar self filemenu2 Menu self menubar self
  • 将 yerr/xerr 绘制为阴影区域而不是误差线

    在 matplotlib 中 如何将误差绘制为阴影区域而不是误差条 例如 而不是 忽略示例图中各点之间的平滑插值 这需要进行一些手动插值 或者只是获得更高分辨率的数据 您可以使用pyplot fill between https matpl
  • 从字典的元素创建 Pandas 数据框

    我正在尝试从字典创建一个 pandas 数据框 字典设置为 nvalues y1 1 2 3 4 y2 5 6 7 8 y3 a b c d 我希望数据框仅包含 y1 and y2 到目前为止我可以使用 df pd DataFrame fr
  • McNemar 在 Python 中的测试以及分类机器学习模型的比较 [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 有没有用 Python 实现的好的 McNemar 测试 我在 Scipy stats 或 Scikit
  • 如何在python中附加两个字节?

    说你有b x04 and b x00 你如何将它们组合起来b x0400 使用Python 3 gt gt gt a b x04 gt gt gt b b x00 gt gt gt a b b x04 x00
  • 数据框 - 平均列

    我在 pandas 中有以下数据框 Column 1 Column 2 Column3 Column 4 2 2 2 4 1 2 2 3 我正在创建一个数据框 其中包含第 1 列和第 2 列 第 3 列和第 4 列等的平均值 ColumnA
  • 检查 python 中命令行参数的数量

    我是蟒蛇新手 还是把脚弄湿了 我正在尝试做这样的事情 import sys if len sys argv lt 3 or lt len sys argv gt 3 print This script will compare two fi
  • 如何获取numpy.random.choice的索引? - Python

    是否可以修改 numpy random choice 函数以使其返回所选元素的索引 基本上 我想创建一个列表并随机选择元素而不进行替换 import numpy as np gt gt gt a 1 4 1 3 3 2 1 4 gt gt
  • python 中的 h2o 框架子集

    如何在 python 中对 h2o 框架进行子集化 如果 x 是一个 df 并且 Origin 是一个变量 那么在 pandas 中我们通常可以通过以下方式进行子集化 x x Origin AAF 但使用 h2o 框架会出现以下错误 H2O
  • PIL.Image.open和tf.image.decode_jpeg返回值的区别

    我使用 PIL Image open 和 tf image decode jpeg 将图像文件解析为数组 但发现PIL Image open 中的像素值与tf image decode jpeg不一样 为什么会出现这种情况 Thanks 代
  • 使用标签或 href 传递 Django 数据

    我有一个包含链接的表 当单击该链接进行更多操作时 我想将一些数据传递给我的函数 my html table tbody for query in queries tr td value a href internal my func que
  • 如何使用`RewriteRule ^(.*)$ ?id=$1 [L,QSA]`通过.htaccess获取文件目录?

    如何使用 htaccess 获取文件目录RewriteRule id 1 L QSA 如果 htaccess 位于http localhost some dir htaccess我正在打开http localhost some dir he
  • App Engine 实体到字典

    将 google app engine 实体 在 python 中 复制到字典对象的好方法是什么 我正在使用 db Expando 对象 所有属性均为扩展属性 Thanks 有一个名为foo尝试 foo dict
  • pygame:使用 sprite.RenderPlain 绘制精灵组的顺序

    我有一个精灵组 需要按一定的顺序绘制 以便其精灵按应有的方式重叠 然而 即使使用运算符模块函数 sorted self sprites key attrgetter y x 对组进行排序 顺序也是错误的 我该如何解决这个问题 直截了当地说
  • 基于值而不是类型的单次调度

    我在 Django 上构建 SPA 并且有一个庞大的功能 其中包含许多功能if用于检查我的对象字段的状态名称的语句 像这样 if self state new do some logic if self state archive do s
  • numpy polyfit 中使用的权重值是多少以及拟合误差是多少

    我正在尝试对 numpy 中的某些数据进行线性拟合 Ex 其中 w 是该值的样本数 即对于点 x 0 y 0 我只有 1 个测量值 该测量值是2 2 但对于这一点 1 1 我有 2 个测量值 值为3 5 x np array 0 1 2 3
  • PyQt5:如何使QThread返回数据到主线程

    I am a PyQt 5 4 1 1初学者 我的Python是3 4 3 这是我尝试遵循的many https mayaposch wordpress com 2011 11 01 how to really truly use qthr
  • 如何通过点击复制 folium 地图上的标记位置?

    I am able to print the location of a given marker on the map using folium plugins MousePosition class GeoMap def update

随机推荐

  • 正确地将 blazor 项目发布/部署到 github 页面

    首先我要说的是 我在这里的工作肯定比我的工资水平稍高一些 我将尽力描述这个问题并使其最容易回答 我在 Visual Studio 中创建了一个 Blazor 项目 并将其连接到 GitHub 存储库here https github com
  • 创建新的android项目时,出现错误“必须指定活动名称”

    当我尝试在如下所示的步骤中创建新的 Android 应用程序项目时 出现错误 必须指定活动名称 当我尝试创建新活动时也会发生同样的情况 我对分层父类有点困惑 它有什么用呢 为什么 Eclipse 不允许我在没有指定的情况下创建活动 这应该是
  • Visual Studio 的 Python 工具上的 Pytest

    可以在 Visual Studio 2010 上调试使用 pytest 库的 python 测试吗 我在解释器参数上添加了 m pytest 但未命中断点 我只能运行测试脚本而不对其进行调试 Pytest 建议创建一个独立的启动脚本 if
  • 将 Rust 应用程序与不在运行时链接器搜索路径中的动态库链接

    我有一个共享库 我想将其动态链接到几个单独的二进制 Cargo 应用程序 我使用以下命令将其位置包含在链接器中 L path to dir格式并且应用程序可以正确编译 并且我期望二进制大小显着减小 但是 当使用检查生成的二进制文件时ldd
  • 查找两个列表相同的从 1 开始的位置

    挑战在于编写一个函数来比较两个相当小的整数列表 每个列表大多少于 10 个元素 一个列表可能类似于 self 0 0 1 2 要与之比较的列表可能类似于以下示例之一 other1 other2 0 0 1 other3 0 0 1 2 0
  • 将输出写入打开 exe 的目录

    我有一个表格exe 现在单击按钮我希望它将文件保存到打开它的位置 例如如果我给这个exe给您 您将其复制到 C 盘文件夹名称 la la 然后将文件保存到 C 盘文件夹名称 la la 目前我正在尝试这个可行的方法 但我不希望它再提供目录路
  • 错误“框架不在模块中。”在 Xamarin.Forms - Android 项目中

    每当涉及到这一行时 就会出现以下错误 using var client new HttpClient var json await client GetStringAsync http mvalivros azurewebsites net
  • 使用 Docker 和 PHP 从 env 文件加载环境变量

    如何使用 Docker 文件中设置的 dotenv 变量传递给 Php 应用程序 最近尝试使用带有一组键配对值的 env 文件来跨不同的配置文件使用 但注意到 Docker Wordpress 映像并不容易设置 虽然在节点等中设置起来相当简
  • 如何判断PDF是横向还是纵向

    有没有工具可以确定 PDF 是横向还是纵向 我目前看过pdfbox and Itext为此 但似乎我找不到它 请告知他们是否支持这一点 使用提取 PDF 页面信息Origami提供的信息是 pdf 页面有一定程度的旋转 以下是 Origam
  • 在项目模板中包含对我自己的程序集的引用的最佳方法是什么?

    我们已经用 C 开发了一个库 现在我希望创建一个项目模板来帮助正确使用该库 我希望新项目包含对库程序集的引用 但不希望将程序集部署到 GAC 或者依赖于驻留在某个特定位置的程序集 我的想法是将 dll 包含在项目模板 zip 文件中 这意味
  • NVelocity 找不到模板

    我在 ASP NET MVC 应用程序中使用 NVelocity 时遇到一些困难 我用它作为生成电子邮件的一种方式 据我所知 我传递的详细信息都是正确的 但它无法加载模板 这是代码 private const string defaultT
  • 如何在 Electron 框架中使用登录事件?

    我需要一些帮助来理解如何Event login Electron 框架中的功能有效 它是浏览器中常见的密码自动填充 记住密码功能的低级实现吗 我想用它来自动填充网页登录流程中的密码 例如 const electron require ele
  • 如何使用 Selenium2Library 在机器人级别向 chromedriver 添加扩展

    我想在我的机器人套件设置中实例化 chromedriver 实例 但我需要在浏览器启动时安装扩展 通过简单地将 chromeoptions 添加到我的 webdriver 实例中 我可以轻松地在 Python 级别执行此操作 但我需要在机器
  • 在 c 中将数组转换为结构体,反之亦然

    令其为以下结构 typedef struct int x int y st 我可以将 int 数组 转换 为 struct st st z int t 2 t 0 0 t 1 1 z st t printf d d n z x z y 那么
  • 条纹 RedirectResolution 重定向到 https url

    假设用户使用 https 访问 stripes action1 一旦action1处理完成 它使用RedirectResolution重定向到action2 此时 浏览器会收到一个 302 to action2 其中包含 http 而不是
  • ASP.NET core 3.1:ConfigureAppConfiguration 是否与 launchSettings.json 交互?

    使用 kestrel 从 Visual Studio 2019 启动 ASP NET core 3 1 Web 应用程序时 我遇到了奇怪的行为 我的意思是启动配置文件not使用 IIS Express 我创建了一个最小的应用程序来重现该问题
  • 三.js raycaster 交集

    我编写了下面的代码来获取与 3d 形状的交点 它工作得很好 但如果有两个与形状的交点 它只返回最远的交点 而我需要与形状最近的交点 我怎样才能到达最近的十字路口 here I create a cube var geometry0 new
  • 如何从字符串中删除特定单词?

    我有一个 NSString str 具有值 我喜欢编程和游戏 我必须从字符串中删除 I like 和 and 这样它看起来应该像 编程游戏 我该怎么做 有什么想法吗 NSString newString I like Programming
  • Django 使用动态 SMTP 设置发送电子邮件

    我正在尝试在管理员中配置 EMAIL HOST 设置 我将创建一个包含必填字段的模型 例如 EMAIL HOST EMAIL HOST USER EMAIL HOST PASSWORD EMAIL PORT 但是我如何使用 send mai
  • python os.walk到一定级别[重复]

    这个问题在这里已经有答案了 我想构建一个程序 使用一些基本代码来读取文件夹并告诉我该文件夹中有多少文件 目前我是这样做的 import os folders Y path1 Y path2 Y path3 for stuff in fold