我想遍历目录和子目录,并检查每个文件的文件大小。如果它与定义的文件大小匹配,则将被删除。
我知道,我必须使用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
答案 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.join
与root
和filename
一起使用。 os.path.getsize将返回文件的大小,os.remove
将删除该文件(如果文件大小匹配)。