Friday, April 22, 2011

How to delete all the files in a directory

import os

dirPath = "/home/giu/pyExperiments/toRemove"
fileList = os.listdir(dirPath)
for fileName in fileList:
 os.remove(dirPath+"/"+fileName)

10 comments:

  1. dude, perfect ! thanks for this it really actually works, unlike all the crap over at stackoverflow.

    ReplyDelete
  2. Hey,

    Appreciated.

    A little improved code

    import os

    dirPath = "/home/giu/pyExperiments/toRemove"
    fileList = os.listdir(dirPath)
    [ os.remove(os.path.abspath(os.path.join(dirPath,fileName))) for fileName in fileList ]

    ReplyDelete
    Replies
    1. Hey buddy ! ,
      Your fileList do not works, as it work as a string not as a directory.
      Instead use this:

      [os.remove(os.path.abspath(os.path.join(destination, fileName))) for fileName in os.listdir(destination)

      Delete
  3. Readability in OP is better.

    ReplyDelete
  4. You will get an error if there is a folder in your dirPath. The 'crap' from stackoverflow does actually work:

    for filename in fileList:
    item=os.path.join(dirPath,fileList)
    if os.path.isfile(item):
    os.remove(item)

    ReplyDelete
  5. gud 1..it helped..:)

    ReplyDelete
  6. Oops... using this code removed ALL dirs now I don;t have the OS
    What can do?

    ReplyDelete
  7. One small tip:
    instead of
    dirPath+"/"+fileName

    I would recommend
    os.path.join(dirPath, fileName), which will insert a forward slash for Unix and Linux users, and a backslash for the Windows guys.

    An alternative just popped into my mind:


    dirPath = 'some/path'


    shutil.rmtree(dirPath)
    os.mkdir(dirPath)

    ReplyDelete
  8. what a wonderful piece of code.. big thanks dude!!

    ReplyDelete
  9. Thank you! Worked perfect for me.

    ReplyDelete