NCCOOS Trac Projects: Top | Web | Platforms | Processing | Viz | Sprints | Sandbox | (Wind)

Changeset 480

Show
Ignore:
Timestamp:
02/10/12 21:34:31
Author:
cbc
Message:

Add start and end day to ascat.py

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • qscatv4/trunk/ascat.py

    r479 r480  
    1010    start_year  is YYYY format, 
    1111    start_month is 1-12 for Jan-Dec, 
     12    start_day   is 1-31, 
    1213    end_year    is YYYY format,               
    13     end_month   is 1-12 for Jan-Dec. 
     14    end_month   is 1-12 for Jan-Dec, 
     15    end_day     is 1-31. 
    1416""" 
    1517 
     
    126128                 
    127129 
    128 def _process(f, year, month): 
     130def _process(f, date): 
    129131    """ 
    130132    Fetch and extract all the files for a month. 
    131133    """ 
    132134 
    133     format = {'year': year, 'month': month,} 
    134     try: 
    135         os.chdir(work_dir) 
    136         sub_dir = os.path.join(base_subdir, 
    137                                year_spec % format, 
    138                                month_spec % format) 
    139         os.makedirs(sub_dir) 
    140         os.chdir(sub_dir) 
    141     except OSError, e: 
    142         if not str(e).startswith("[Errno 17] File exists"): 
    143             traceback.print_exc() 
    144             return False 
    145     day_range = range(1, calendar.monthrange(year, month)[1] + 1) 
     135    day_range = date['range'] 
    146136    for day in day_range: 
    147         format.update({'day': day,}) 
     137        date.update({'day': day,}) 
    148138        try: 
    149139            print f.cwd(os.path.join(os.path.sep, 
    150140                                     ftp_dir, 
    151                                      year_spec % format
    152                                      month_spec % format
    153                                      day_spec % format
     141                                     year_spec % date
     142                                     month_spec % date
     143                                     day_spec % date
    154144                                     "").replace(os.path.sep, '/')) 
    155145        except KeyboardInterrupt: 
     
    163153    return True 
    164154 
    165 def ascat(start_year, start_month, end_year, end_month): 
     155def ascat(start_year, start_month, start_day, 
     156          end_year,   end_month,   end_day): 
    166157    """ 
    167158    Fetch and extract a range of files. 
    168159 
    169     ascat(start_year, start_month, end_year, end_month) -> None 
    170  
    171     start_year  is inclusive. 
    172     start_month is 1-12 inclusive. 
    173     end_year    is exclusive. 
    174     end_month   is 2-13 exclusive. 
     160    ascat(start_year, start_month, start_day, 
     161          end_year,   end_month,   end_day   ) -> None 
     162 
     163    start_year  is inclusive, 
     164    start_month is 1-12 inclusive, 
     165    start_day   is 1-31 inclusive, 
     166    end_year    is exclusive, 
     167    end_month   is 2-13 exclusive, 
     168    end_day     is 2-32 exclusive. 
    175169    """ 
    176170 
     
    189183        month_range = range(_start_month, _end_month) 
    190184        for month in month_range: 
    191             if not _process(f, year, month): continue 
     185            if year == year_range[0] and month == month_range[0]: 
     186                _start_day = start_day 
     187            else: 
     188                _start_day = 1 
     189            if year == year_range[-1] and month == month_range[-1]: 
     190                _end_day = end_day 
     191            else: 
     192                _end_day = calendar.monthrange(year, month)[1] + 1 
     193            day_range = range(_start_day, _end_day) 
     194            date = {'year': year, 
     195                    'month': month, 
     196                    'range': day_range, 
     197                   } 
     198            try: 
     199                os.chdir(work_dir) 
     200                sub_dir = os.path.join(base_subdir, 
     201                                       year_spec % date, 
     202                                       month_spec % date) 
     203                os.makedirs(sub_dir) 
     204                os.chdir(sub_dir) 
     205            except OSError, e: 
     206                if not str(e).startswith("[Errno 17] File exists"): 
     207                    traceback.print_exc() 
     208                    continue 
     209            if not _process(f, date): continue 
    192210    print f.quit() 
    193211 
    194212if __name__ == '__main__': 
    195213    try: 
    196         if len(sys.argv) != 5: raise 
     214        if len(sys.argv) != 7: raise 
    197215        start_year  = int(sys.argv[1]) 
    198216        start_month = int(sys.argv[2]) 
    199         end_year    = int(sys.argv[3]) + 1 
    200         end_month   = int(sys.argv[4]) + 1  
     217        start_day   = int(sys.argv[3]) 
     218        end_year    = int(sys.argv[4]) + 1 
     219        end_month   = int(sys.argv[5]) + 1 
     220        end_day     = int(sys.argv[6]) + 1  
    201221    except KeyboardInterrupt: 
    202222        raise 
     
    204224        print __doc__ 
    205225        sys.exit() 
    206     ascat(start_year, start_month, end_year, end_month) 
     226    ascat(start_year, start_month, start_day, 
     227          end_year,   end_month,   end_day)