web-dev-qa-db-ja.com

Pythonで空のディレクトリを見つける

すべて、

削除する前にディレクトリにデータがあるかどうかを確認する最良の方法は何ですか?私はwgetを使用していくつかの写真を見つけるためにいくつかのページを閲覧していますが、もちろんすべてのページに画像はありませんが、ディレクトリはまだ作成されています。

dir = 'Files\\%s' % (directory)
os.mkdir(dir)
cmd = 'wget -r -l1 -nd -np -A.jpg,.png,.gif -P %s %s' %(dir,  i[1])
os.system(cmd)
if not os.path.isdir(dir):
    os.rmdir(dir)

ファイルが作成された後にディレクトリにドロップされたかどうかをテストしたいと思います。何もない場合は...削除してください。

ありがとう、アダム

39
aeupinhere
import os

if not os.listdir(dir):
    os.rmdir(dir)

[〜#〜] lbyl [〜#〜] スタイル。
for [〜#〜] eafp [〜#〜] 、mouadの回答を参照してください。

56
Corey Goldberg

[〜#〜] eafp [〜#〜] のようにします:

try:
    os.rmdir(dir)
except OSError as ex:
    if ex.errno == errno.ENOTEMPTY:
        print "directory not empty"

os.rmdir は、空でないディレクトリを削除しません。

45
mouad

試してください:

if not os.listdir(dir): 
    print "Empty"

または

if os.listdir(dir) == []:
    print "Empty"
18
dogbane

これは Python3.5 + でより効率的に実行できるようになりました。空かどうかを確認するためだけにディレクトリの内容のリストを作成する必要がないためです。

import os

def is_dir_empty(path):
    return next(os.scandir(path), None) is None
5
ideasman42

空のディレクトリがすでに作成されている場合、このスクリプトを外部ディレクトリに配置して実行できます。

import os

def _visit(arg, dirname, names):
    if not names:
        print 'Remove %s' % dirname
        os.rmdir(dirname)

def run(outer_dir):
    os.path.walk(outer_dir, _visit, 0)

if __== '__main__':
    outer_dir = os.path.dirname(__file__)
    run(outer_dir)
    os.system('pause')
1
Jakob

以下は、ディレクトリが空かどうかをチェックするための最速かつ最適化された方法です。

_empty = False
for dirpath, dirnames, files in os.walk(dir):
    if files:
        print("Not empty !") ;
    if not files:
        print("It is empty !" )
        empty = True
    break ;
_

ここで言及されている他の回答は高速ではないです。通常のos.listdir()を使用したい場合、ディレクトリのファイルが多すぎる場合、低速 urコードを使用し、os.rmdir( )メソッドを使用してエラーをキャッチしようとすると、そのフォルダーが削除されます。これは、単に空の状態を確認したいだけの場合にはしたくないことです。

0
Natesh bhat