我想从dataset3文件夹中删除dataset文件夹。但是下面的代码没有删除dataset。首先我想检查dataset是否已经存在于dataset中,然后删除dataset。有人能指出我下面代码中的错误吗?
for files in os.listdir("dataset3"): if os.path.exists("dataset"): os.system("rm -rf "+"dataset")
oxalkeyp1#
Python的os.rmdir()只在空目录下工作,但是shutil.rmtree()并不关心(即使有子目录),这使得它非常类似于Linux的rm -rf命令。
os.rmdir()
shutil.rmtree()
rm -rf
import os import shutil dirpath = os.path.join('dataset3', 'dataset') if os.path.exists(dirpath) and os.path.isdir(dirpath): shutil.rmtree(dirpath)
现代方法
在Python 3.4+中,你可以使用pathlib模块来做同样的事情,使代码更加面向对象和可读:
pathlib
from pathlib import Path import shutil dirpath = Path('dataset3') / 'dataset' if dirpath.exists() and dirpath.is_dir(): shutil.rmtree(dirpath)
yfwxisqw2#
os.remove()是删除文件。os.rmdir()是删除一个空目录。shutil.rmtree()是删除目录及其所有内容。
os.remove()
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")
gstyhher3#
最好设置ignore_errors:
ignore_errors
import shutil shutil.rmtree('/folder_name', ignore_errors=True)
这是可读性强得多,简洁得多。请注意,它将忽略所有错误,而不仅仅是dir缺失错误。
bvn4nwqk4#
试试这个:
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()已经告诉您它存在。如果你的文件夹名是静态的,你可以这样做:
if os.path.exists("dataset3/dataset"): os.system("rm -rf dataset3/dataset")
或作为:
try: os.system("rm -rf dataset3/dataset") except: pass
nwnhqdif5#
这将做到这一点:
for files in os.listdir('dataset3'): if files == 'dataset': os.rmdir(os.path.join(os.getcwd() + 'dataset3', files))
5条答案
按热度按时间oxalkeyp1#
Python的
os.rmdir()
只在空目录下工作,但是shutil.rmtree()
并不关心(即使有子目录),这使得它非常类似于Linux的rm -rf
命令。现代方法
在Python 3.4+中,你可以使用
pathlib
模块来做同样的事情,使代码更加面向对象和可读:yfwxisqw2#
os.remove()
是删除文件。os.rmdir()
是删除一个空目录。shutil.rmtree()
是删除目录及其所有内容。gstyhher3#
最好设置
ignore_errors
:这是可读性强得多,简洁得多。
请注意,它将忽略所有错误,而不仅仅是dir缺失错误。
bvn4nwqk4#
试试这个:
您不需要os.path.exists(),因为os.listdir()已经告诉您它存在。
如果你的文件夹名是静态的,你可以这样做:
或作为:
nwnhqdif5#
这将做到这一点: