迭代目录并检查文件的大小

时间:2012-05-12 16:23:46

标签: python

我想遍历目录和子目录,并检查每个文件的文件大小。如果它与定义的文件大小匹配,则将被删除。

我知道,我必须使用os.walk,但我不太确定,以哪种方式。

我用于目录列表的代码是:

import os
path = "C:\\Python27"
i=0
for (path,dirs,files) in os.walk(path):
    print files
    i=i+1
    if i>10:
        break

2 个答案:

答案 0 :(得分:2)

试试这个:

import os

for root, dirs, files in os.walk('/path/to/dir', topdown=False):
    for name in files:
        f = os.path.join(root, name)
        if os.path.getsize(f) == filesize:
            os.remove(f)

答案 1 :(得分:1)

这应该有效:

from __future__ import print_function # => For Python 2.5 - 2.7
import os

def delete_files_with_size(dirname, size):
    for root, _, files in os.walk(dirname):
        for filename in files:
            filepath = os.path.join(root, filename)
            if os.path.getsize(filepath) == size:
                print('removing {0}'.format(filepath))
                os.remove(filepath)

就像你说的那样,os.walk是这种事情的方法。 os.walk返回包含根路径,目录列表和文件列表的元组。由于我们对目录不感兴趣,因此在解包返回值时我们使用传统的_变量名。

由于文件名本身不包含路径,因此您可以将os.path.joinrootfilename一起使用。 os.path.getsize将返回文件的大小,os.remove将删除该文件(如果文件大小匹配)。