すべて、
削除する前にディレクトリにデータがあるかどうかを確認する最良の方法は何ですか?私は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)
ファイルが作成された後にディレクトリにドロップされたかどうかをテストしたいと思います。何もない場合は...削除してください。
ありがとう、アダム
import os
if not os.listdir(dir):
os.rmdir(dir)
[〜#〜] lbyl [〜#〜] スタイル。
for [〜#〜] eafp [〜#〜] 、mouadの回答を参照してください。
[〜#〜] eafp [〜#〜] のようにします:
try:
os.rmdir(dir)
except OSError as ex:
if ex.errno == errno.ENOTEMPTY:
print "directory not empty"
os.rmdir は、空でないディレクトリを削除しません。
試してください:
if not os.listdir(dir):
print "Empty"
または
if os.listdir(dir) == []:
print "Empty"
これは Python3.5 + でより効率的に実行できるようになりました。空かどうかを確認するためだけにディレクトリの内容のリストを作成する必要がないためです。
import os
def is_dir_empty(path):
return next(os.scandir(path), None) is None
空のディレクトリがすでに作成されている場合、このスクリプトを外部ディレクトリに配置して実行できます。
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')
_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( )
メソッドを使用してエラーをキャッチしようとすると、そのフォルダーが削除されます。これは、単に空の状態を確認したいだけの場合にはしたくないことです。