python - 显示找到的文件数和进度

标签 python

我目前有一个代码可以按关键字搜索文件。有没有办法在代码运行时显示找到的文件数和/或显示进度?我有一个大目录要搜索,如果可能的话,我想看看进度。我目前拥有的代码没有显示太多信息或处理时间。

import os
import shutil
import time
import sys

def update_progress_bar():
  print '\b.',
  sys.stdout.flush()

print 'Starting ',
sys.stdout.flush()

path = '//server/users/'
keyword = 'monthly report'

for root, dirs, files in os.walk(path):
  for name in files:
     if keyword in name.lower():
        time.sleep(0)
        update_progress_bar()

print ' Done!'

最佳答案

这很简单,但为什么不只保留一个计数器呢?

files_found = 0
for root, dirs, files in os.walk(path):
  for name in files:
     if keyword in name.lower():
        files_found += 1
        time.sleep(0)
        update_progress_bar()

print "Found {}".format(files_found)

编辑:如果你想计算进度,你应该首先计算出你将迭代多少个文件。如果您使用嵌套列表理解,您可以将 os.walk 发出的每个三元组中的每个 files 展平。

filenames = [name for file in [files for _, _, files in os.walk(path)]]
num_files = float(len(filenames))

现在,在每个步骤中,您可以将进度描述为当前步骤数除以文件数。换句话说,使用 enumerate获取步数:

files_found = 0
for step, name in enumerate(filenames):
  progress = step / num_files
  print "{}% complete".format(progress * 100)
    if keyword in name.lower():
      files_found += 1
      time.sleep(0)
      update_progress_bar()

如果您想在如何打印进度方面更有创意,那是另一个问题。

关于python - 显示找到的文件数和进度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41388897/

相关文章:

python - 如何使用 python setup.py 上传?

python - 在 Django 中更好地保​​护我的电子邮件密码

python - django-image-cropping 在管理界面中不起作用

python - csv 文件中的单独二进制数据(blob)

python - 使用 BitNami 镜像在 EC2 上部署 Django 项目

python - 如何哈希列表?

python - 如何将 Django 2.2 与旧版 PostgreSQL 8.4 数据库一起使用?

python - 将十进制数转换为 6 位二进制数

python - 递归函数内有一个列表对内存/资源的影响

python - 在裤子buildtool中, 'advanced'选项和常规选项有什么区别?