def list(self, dir, skip_mtime=False):
month_to_int = {'Jan': 1, 'Feb': 2, 'Mar': 3, 'Apr': 4,
'May': 5, 'Jun': 6, 'Jul': 7, 'Aug': 8, 'Sep': 9,
'Oct': 10, 'Nov': 11, 'Dec': 12}
try:
buffer = []
self.ftp.dir('-a ', dir, buffer.append)
except ftplib.error_temp:
buffer = []
self.ftp.dir(dir, buffer.append)
dirs = []
files = {}
for line in buffer:
cols = line.split(None, 8)
name = os.path.split(cols[8])[1]
if cols[0] == 'total' or name in ('.', '..'):
continue
if cols[0].startswith('d'):
dirs.append(name)
else:
if skip_mtime:
mtime = 0
else:
month = month_to_int[cols[5]]
day = int(cols[6])
if cols[7].find(':') == -1:
year = int(cols[7])
hour = minute = 0
else:
year = datetime.date.today().year
hour, minute = [int(s) for s in cols[7].split(':')]
mtime = datetime.datetime(year, month, day, hour, minute)
mtime = int(time.mktime(mtime.timetuple()))
size = int(cols[4])
files[name] = {
'size': size,
'mtime': mtime,
}
return (dirs, files)
评论列表
文章目录