Deleting all files in a directory with Python
Become part of the top 3% of the developers by applying to Toptal https://topt.al/25cXVn
--
Music by Eric Matyas
https://www.soundimage.org
Track title: Dreaming in Puzzles
--
Chapters
00:00 Question
00:21 Accepted answer (Score 313)
00:56 Answer 2 (Score 26)
01:32 Answer 3 (Score 25)
02:03 Answer 4 (Score 8)
02:32 Thank you
--
Full question
https://stackoverflow.com/questions/1995...
Accepted answer links:
[os.listdir]: https://docs.python.org/2/library/os.htm...
[os.remove]: https://docs.python.org/2/library/os.htm...
[glob.glob]: https://docs.python.org/3/library/glob.h...
[os.chdir]: https://docs.python.org/2/library/os.htm...
Answer 3 links:
[os.scandir]: https://docs.python.org/3/library/os.htm...
[os.DirEntry]: https://docs.python.org/3/library/os.htm...
--
Content licensed under CC BY-SA
https://meta.stackexchange.com/help/lice...
--
Tags
#python #fileio
#avk47
--
Music by Eric Matyas
https://www.soundimage.org
Track title: Dreaming in Puzzles
--
Chapters
00:00 Question
00:21 Accepted answer (Score 313)
00:56 Answer 2 (Score 26)
01:32 Answer 3 (Score 25)
02:03 Answer 4 (Score 8)
02:32 Thank you
--
Full question
https://stackoverflow.com/questions/1995...
Accepted answer links:
[os.listdir]: https://docs.python.org/2/library/os.htm...
[os.remove]: https://docs.python.org/2/library/os.htm...
[glob.glob]: https://docs.python.org/3/library/glob.h...
[os.chdir]: https://docs.python.org/2/library/os.htm...
Answer 3 links:
[os.scandir]: https://docs.python.org/3/library/os.htm...
[os.DirEntry]: https://docs.python.org/3/library/os.htm...
--
Content licensed under CC BY-SA
https://meta.stackexchange.com/help/lice...
--
Tags
#python #fileio
#avk47
ACCEPTED ANSWER
Score 321
Via os.listdir and os.remove:
import os
filelist = [ f for f in os.listdir(mydir) if f.endswith(".bak") ]
for f in filelist:
os.remove(os.path.join(mydir, f))
Using only a single loop:
for f in os.listdir(mydir):
if not f.endswith(".bak"):
continue
os.remove(os.path.join(mydir, f))
Or via glob.glob:
import glob, os, os.path
filelist = glob.glob(os.path.join(mydir, "*.bak"))
for f in filelist:
os.remove(f)
Be sure to be in the correct directory, eventually using os.chdir.
ANSWER 2
Score 26
Use os.chdir to change directory .
Use glob.glob to generate a list of file names which end it '.bak'. The elements of the list are just strings.
Then you could use os.unlink to remove the files. (PS. os.unlink and os.remove are synonyms for the same function.)
#!/usr/bin/env python
import glob
import os
directory='/path/to/dir'
os.chdir(directory)
files=glob.glob('*.bak')
for filename in files:
os.unlink(filename)
ANSWER 3
Score 8
you can create a function. Add maxdepth as you like for traversing subdirectories.
def findNremove(path,pattern,maxdepth=1):
cpath=path.count(os.sep)
for r,d,f in os.walk(path):
if r.count(os.sep) - cpath <maxdepth:
for files in f:
if files.endswith(pattern):
try:
print "Removing %s" % (os.path.join(r,files))
#os.remove(os.path.join(r,files))
except Exception,e:
print e
else:
print "%s removed" % (os.path.join(r,files))
path=os.path.join("/home","dir1","dir2")
findNremove(path,".bak")