From: MRAB on 19 May 2010 11:43 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() >
|
Pages: 1 Prev: __str__ for each function in a class Next: What's the matter with docs.python.org? |