on run try my main(choose file of type ["public.tab-separated-values-text"]) on error errs number errn return errs end try end run on main(csv) do shell script "python <<'EOF' - " & quoted form of POSIX path of csv & " # coding: utf-8 import sys, os, csv, Cocoa def set_new_attrs(cur, new_cdate, new_mdate): lc = Cocoa.NSLocale.alloc().initWithLocaleIdentifier_('en_US_POSIX') df = Cocoa.NSDateFormatter.alloc().init() df.setLocale_(lc) df.setDateFormat_('yyyy-MM-dd HH:mm:ss') new_cdate = df.dateFromString_(new_cdate) new_mdate = df.dateFromString_(new_mdate) if not new_cdate or not new_mdate: sys.exit('invalid date format') if new_cdate.timeIntervalSinceDate_(cur) > 0: new_cdate = cur if new_mdate.timeIntervalSinceDate_(cur) > 0: new_mdate = cur new_attrs = { Cocoa.NSFileCreationDate : new_cdate, Cocoa.NSFileModificationDate : new_mdate } return new_attrs def main(): cur = Cocoa.NSDate.date() with open(sys.argv[1]) as csvfile: reader = csv.reader(csvfile, delimiter = '\\t') header = next(reader) for row in reader: new_mdate, new_cdate, fpath = [x.decode('utf-8') for x in row] fpath = os.path.expanduser(fpath) if not os.path.exists(fpath): continue new_attrs = set_new_attrs(cur, new_cdate, new_mdate) res, err = Cocoa.NSFileManager.defaultManager().setAttributes_ofItemAtPath_error_( new_attrs, fpath, None ) if not res: errs = err.localizedDescription().encode('utf-8') sys.exit(errs) # out = fpath.encode('utf-8') # print(out) main() EOF" end main