sara
sara

Reputation: 1757

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

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.

Upvotes: 60

Views: 95738

Answers (4)

ans2human
ans2human

Reputation: 2357

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

Upvotes: -1

Kallz
Kallz

Reputation: 3523

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

Upvotes: 112

Netwave
Netwave

Reputation: 42678

Just use shutil.rmtree

import shutil
shutil.rmtree(path)

Upvotes: 38

PMonti
PMonti

Reputation: 460

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

Upvotes: -6

Related Questions