2017-05-03 98 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

@馬蒂奧修好了! –

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) 
相關問題