Index: qscatv4/trunk/ascat.py =================================================================== --- qscatv4/trunk/ascat.py (revision 479) +++ qscatv4/trunk/ascat.py (revision 480) @@ -10,6 +10,8 @@ start_year is YYYY format, start_month is 1-12 for Jan-Dec, + start_day is 1-31, end_year is YYYY format, - end_month is 1-12 for Jan-Dec. + end_month is 1-12 for Jan-Dec, + end_day is 1-31. """ @@ -126,30 +128,18 @@ -def _process(f, year, month): +def _process(f, date): """ Fetch and extract all the files for a month. """ - format = {'year': year, 'month': month,} - try: - os.chdir(work_dir) - sub_dir = os.path.join(base_subdir, - year_spec % format, - month_spec % format) - os.makedirs(sub_dir) - os.chdir(sub_dir) - except OSError, e: - if not str(e).startswith("[Errno 17] File exists"): - traceback.print_exc() - return False - day_range = range(1, calendar.monthrange(year, month)[1] + 1) + day_range = date['range'] for day in day_range: - format.update({'day': day,}) + date.update({'day': day,}) try: print f.cwd(os.path.join(os.path.sep, ftp_dir, - year_spec % format, - month_spec % format, - day_spec % format, + year_spec % date, + month_spec % date, + day_spec % date, "").replace(os.path.sep, '/')) except KeyboardInterrupt: @@ -163,14 +153,18 @@ return True -def ascat(start_year, start_month, end_year, end_month): +def ascat(start_year, start_month, start_day, + end_year, end_month, end_day): """ Fetch and extract a range of files. - ascat(start_year, start_month, end_year, end_month) -> None - - start_year is inclusive. - start_month is 1-12 inclusive. - end_year is exclusive. - end_month is 2-13 exclusive. + ascat(start_year, start_month, start_day, + end_year, end_month, end_day ) -> None + + start_year is inclusive, + start_month is 1-12 inclusive, + start_day is 1-31 inclusive, + end_year is exclusive, + end_month is 2-13 exclusive, + end_day is 2-32 exclusive. """ @@ -189,14 +183,40 @@ month_range = range(_start_month, _end_month) for month in month_range: - if not _process(f, year, month): continue + if year == year_range[0] and month == month_range[0]: + _start_day = start_day + else: + _start_day = 1 + if year == year_range[-1] and month == month_range[-1]: + _end_day = end_day + else: + _end_day = calendar.monthrange(year, month)[1] + 1 + day_range = range(_start_day, _end_day) + date = {'year': year, + 'month': month, + 'range': day_range, + } + try: + os.chdir(work_dir) + sub_dir = os.path.join(base_subdir, + year_spec % date, + month_spec % date) + os.makedirs(sub_dir) + os.chdir(sub_dir) + except OSError, e: + if not str(e).startswith("[Errno 17] File exists"): + traceback.print_exc() + continue + if not _process(f, date): continue print f.quit() if __name__ == '__main__': try: - if len(sys.argv) != 5: raise + if len(sys.argv) != 7: raise start_year = int(sys.argv[1]) start_month = int(sys.argv[2]) - end_year = int(sys.argv[3]) + 1 - end_month = int(sys.argv[4]) + 1 + start_day = int(sys.argv[3]) + end_year = int(sys.argv[4]) + 1 + end_month = int(sys.argv[5]) + 1 + end_day = int(sys.argv[6]) + 1 except KeyboardInterrupt: raise @@ -204,3 +224,4 @@ print __doc__ sys.exit() - ascat(start_year, start_month, end_year, end_month) + ascat(start_year, start_month, start_day, + end_year, end_month, end_day)