Dataset3フォルダーからデータセットフォルダーを削除したい。ただし、次のコードはデータセットを削除していません。最初に、データセットにデータセットが既に存在するかどうかを確認してから、データセットを削除します。
次のコードの間違いを指摘してください。
for files in os.listdir("dataset3"):
if os.path.exists("dataset"):
os.system("rm -rf "+"dataset")
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)
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")
これを試して:
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
これはそれを行います:
for files in os.listdir('dataset3'):
if files == 'dataset':
os.rmdir(os.path.join(os.getcwd() + 'dataset3', files))