2

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

我知道,我必须使用 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
4

2 回答 2

3

尝试这个:

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)
于 2012-05-12T16:35:23.413 回答
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.joinwithrootfilename. os.path.getsize将返回文件的大小,os.remove如果它匹配大小将删除该文件。

于 2012-05-12T16:32:08.800 回答