Skip to content

Instantly share code, notes, and snippets.

@Starou
Forked from artlogic/ftprmtree.py
Last active August 29, 2015 14:07
Show Gist options
  • Save Starou/beb8bde114bf7a20cf80 to your computer and use it in GitHub Desktop.
Save Starou/beb8bde114bf7a20cf80 to your computer and use it in GitHub Desktop.
def rmtree_ftp(ftp, path):
"""Recursively delete a directory tree on a remote server."""
wd = ftp.pwd()
try:
names = ftp.nlst(path)
except ftplib.all_errors as e:
# some FTP servers complain when you try and list non-existent paths
#_log.debug('FtpRmTree: Could not remove {0}: {1}'.format(path, e))
return
for name in names:
if os.path.split(name)[1] in ('.', '..'):
continue
try:
ftp.cwd(name) # if we can cwd to it, it's a folder
ftp.cwd(wd) # don't try a nuke a folder we're in
rmtree_ftp(ftp, name)
except ftplib.all_errors:
ftp.delete(name)
try:
ftp.rmd(path)
except ftplib.all_errors as e:
raise e
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment