2017-05-03 11 views
1

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

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

@HFBrowning - これはディレクトリに対してあまり効果的ではありません。 – tdelaney

+0

'files'ファイル名を使用せず、元のパス( 'dataset3')を追加する必要があります。 – tdelaney

+0

それではどうすればいいのですか – sara

答えて

0

これはそれを行います。

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

'os.path.join()'では、先行するスラッシュ''/dataset3''の中で。 – martineau

+1

@martineau fixed! –

5

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") 
0

これを試してみてください。

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

あなたは(os.path.existsを必要としない)、既にそれが存在していることを、あなたに言ったでos.listdir()ので。

そして、あなたのfoldernamesが静的であれば、あなたがそれを行うことができます。

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

かのように:ディレクトリが空の場合

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

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) 
関連する問題