How to remove a directory including all its files in python?
Asked Answered
H

4

55

I'm working on some Python code. I want to remove the new_folder including all its files at the end of program.

Can someone please guide me how I can do that? I have seen different commands like os.rmdir but it only removes the path. Here is my code:

for files in sorted(os.listdir(path)):
  os.system("mv "+path+" new_folder")`

The code above will move a folder (called check) into new_folder. I want to remove that check folder from the new_folder.

Highclass answered 3/5, 2017 at 9:34 Comment(1)
Possible duplicate of How do I remove/delete a folder that is not empty with Python?Sadiesadira
G
105

If you want to delete the file

import os
os.remove("path_to_file")

but you can`t delete directory by using above code if you want to remove directory then use this

import os
os.rmdir("path_to_dir")

from above command, you can delete a directory if it's empty if it's not empty then you can use shutil module

import shutil
shutil.rmtree("path_to_dir")

All above method are Python way and if you know about your operating system that this method depends on OS all above method is not dependent

import os
os.system("rm -rf _path_to_dir")
Grouper answered 3/5, 2017 at 10:10 Comment(1)
Oh well here is how you this thing:... but actually this is how you do this thing: ... but REALLY this is what you asked for:...Unstable
G
36

Just use shutil.rmtree

import shutil
shutil.rmtree(path)
Gatt answered 3/5, 2017 at 9:52 Comment(0)
W
-1

Here's my Approach:

# function that deletes all files and then folder

import glob, os

def del_folder(dir_name):
    
    dir_path = os.getcwd() +  "\{}".format(dir_name)
    try:
        os.rmdir(dir_path)  # remove the folder
    except:
        print("OSError")   # couldn't remove the folder because we have files inside it
    finally:
        # now iterate through files in that folder and delete them one by one and delete the folder at the end
        try:
            for filepath in os.listdir(dir_path):
                os.remove(dir_path +  "\{}".format(filepath))
            os.rmdir(dir_path)
            print("folder is deleted")
        except:
            print("folder is not there")
Washington answered 12/3, 2021 at 18:57 Comment(1)
Can anyone comment on this method? I see negative votes but I do not fundamentally disagree with what is written aboveTorch
A
-6

use os.system("rm -rf" + whatever_path +" new_folder")

Altruism answered 3/5, 2017 at 9:38 Comment(4)
But I want to remove a folder that is inside another folder.Highclass
I want to use something like. If os.path.exists() then removeHighclass
the use os.system("rm -rf " + path + "/new_folder"). Also, the -f function does not throw an error if the folder does not exist so you are already setAltruism
Better to use shutil.rmtree suggested in other answers. This answer opens up the possibility of arbitrary shell commands execution if the string whatever_path comes from untrusted input.Thessa

© 2022 - 2024 — McMap. All rights reserved.