My work machine is on all the time, and I figured it might work well for simple tasks like text file processing:
– Take input file
– Do something with it (add information, transform text, add columns, etc)
– Save file (either overwrite old one, or create a new output file)
I used Dropboxâ??s shared folder functionality to let multiple people submit their files for processing. Your Mac will see those shared folders as local, and if you set up a cron job, you are pretty much done.
Here are some steps that can help:
- Write your script
- Create a folder on Dropbox. Share it with people who will need access
- Edit your crontab. Hereâ??s a great detailed blog post on how to do this
- Confirm itâ??s working
- Sit back and relax, as your work is done :)
Note: remember to use absolute paths for your scripts and if youâ??re passing file/folder paths as parameters, make sure those paths are also absolute.
Hereâ??s my example:
0,30 8,19 * * 1-5 python /Users/[name]/Dropbox/script.py /Users/[name]/[folder]/*.csv
This runs the script every half hour, between the hours of 8am and 7pm, Monday-Friday and processes all .csv files in the designated Dropbox folder.
And here’s a simplified Python script, maybe some will find it helpful.
import csv import sys import os.path for filename in sys.argv[1:]: # don't need to process my example file # or anything with the _out in the file name, # since my script creates them if (filename.find('example.csv') == -1) and (filename.find('_out')== -1): # also check if script already ran # and you have _out.csv file saved in your folder if os.path.isfile(filename.replace('.csv', '_out.csv')) == False: with open(filename) as f: input = csv.reader(open(filename, 'rU'), delimiter=',', quotechar='"') output = csv.writer(open(filename.replace('.csv','_out.csv'), 'ab'), delimiter=',',quotechar='"', quoting=csv.QUOTE_MINIMAL) rowcount = 0 for row in input: if rowcount == 0: # skips the first header row output.writerow(row) rowcount += 1 else: # do your file processing here output.writerow(row) rowcount += 1