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.joinファイル名自体にはパスが含まれていないため、とrootで使用できますfilenameos.path.getsizeはファイルのサイズを返し、サイズos.removeと一致する場合はそのファイルを削除します。

于 2012-05-12T16:32:08.800 に答える