Delete files from FTP Server older then 7 days. Using ftputil and ftplib.
MRAB
python at mrabarnett.plus.com
Wed May 19 11:43:00 EDT 2010
pilgrim773 wrote:
> Hello I am new to Python programming. I need a write a script which
> will delete files from a FTP server after they have reached a certain
> age, like 7 days for example. I have prepared this code below, but I
> get an error message:
> The system cannot find the path specified: '/test123/*.*' Probably
> someone can help me further? Thank you in advance!
>
> import os, time, ftputil
> from ftplib import FTP
>
> ftp = FTP('127.0.0.1')
> print "Automated FTP Maintainance"
> print 'Logging in.'
> ftp.login('admin', 'admin')
>
> # This is the directory that we want to go to
> directory = 'test123'
> print 'Changing to:' + directory
> ftp.cwd(directory)
> files = ftp.retrlines('LIST')
> print 'List of Files:' + files
> # ftp.remove('LIST')
>
It's better to pass the full filename instead of changing the directory
because it means that you don't need to keep track of which directory
you're currently in, for example:
files = ftp.retrlines(directory + '/LIST')
> #-------------------------------------------
> now = time.time()
> for f in os.listdir(directory):
> if os.stat(f).st_mtime < now - 7 * 86400:
> if os.directory.isfile(f):
> os.remove(os.directory.join(directory, f))
The os module works with _local_ files, not the remote files on a
server.
You can list the files and get info about them like this:
reply = []
ftp.retrlines("LIST " + directory, reply.append)
'reply' will be a list of lines, one per file, which you can then parse.
It shouldn't be too difficult to write a function to hide the messy
details. :-)
> #except:
> #exit ("Cannot delete files")
Bare excepts are almost always a very bad idea.
> #-------------------------------------------
>
> print 'Closing FTP connection'
> ftp.close()
>
More information about the Python-list
mailing list