web-dev-qa-db-ja.com

フォルダーの存在を確認してから削除する方法は?

Dataset3フォルダーからデータセットフォルダーを削除したい。ただし、次のコードはデータセットを削除していません。最初に、データセットにデータセットが既に存在するかどうかを確認してから、データセットを削除します。
次のコードの間違いを指摘してください。

for files in os.listdir("dataset3"):
    if os.path.exists("dataset"):
        os.system("rm -rf "+"dataset")
16
sara

os.rmdir()は、ディレクトリが空の場合にのみ機能しますが、以下は(サブディレクトリがあっても)気にしません。また、os.system()およびrmコマンドを使用するよりも移植性があります。

import shutil
import os

dirpath = os.path.join('dataset3', 'dataset')
if os.path.exists(dirpath) and os.path.isdir(dirpath):
    shutil.rmtree(dirpath)
25
martineau

os.remove()はファイルを削除することです。

os.rmdir()は、空のディレクトリを削除することです。

shutil.rmtree()は、ディレクトリとそのすべてのコンテンツを削除します。

import os

folder = "dataset3/"

# Method 1
for files in os.listdir(folder):
    if files == "dataset":
        os.remove(folder + "dataset")

# Method 2
if os.path.exists(folder + "dataset"):
    os.remove(folder + "dataset")
11
Huang Yen Hao

これを試して:

for files in os.listdir("dataset3"):
  if files=="dataset":
    fn=os.path.join("dataset3", files)
    os.system("rm -rf "+fn)
    break

Os.listdir()が既に存在することを通知しているため、os.path.exists()は必要ありません。

フォルダー名が静的な場合は、次の方法で実行できます。

if os.path.exists("dataset3/dataset"):
  os.system("rm -rf dataset3/dataset")

または:

try:
  os.system("rm -rf dataset3/dataset")
except:
  pass
0
dede

これはそれを行います:

for files in os.listdir('dataset3'):
     if files == 'dataset':
         os.rmdir(os.path.join(os.getcwd() + 'dataset3', files))
0