Friday, May 22, 2009

Time registering command line tool in Python

Often, I want to write a one-liner to a file to register information. I do my time tracking this way, for example. First, you need Python to get data from the command line. Say you want to track number of hours spent on a project at work and get this into a tab-delimited file that you can open in a spreadsheet later (Excel, Calc, etc). You want a utility where you simply write the following at the command prompt: 

regtime projectname hours

and it should automatically make the following line in your "spreadsheet":

date projectname hours

In order to do this, we need to get the current date in Python. Luckily, there is a nice module called time that allows us to do that in a simple fashion. First, import it as follows: 

from  time import strftime as getdate
currentDate=getdate('%Y-%m-%d')

What this does is that it gets the current local time used on the computer and writes a text string with the date:

currentDate='2009-05-22'

We also need to get the command line arguments projectname and hours into Python.
For this we need the list sys.argv.

from sys import argv as arguments
projectname=argv[1]; hours=argv[2];

Ok, lets summarize with a script that takes the two command line arguments and writes the "spreadsheet" line to the screen:

from sys import argv as cla 
from time import strftime as getDate 
myString = getDate('%Y-%m-%d')+'\t'+cla[1]+'\t'+cla[2]+'\n' 
print myString

The result of running this script with arguments "Command line tool" and 1 is shown below:

2009-05-22      Command line tool       1

Next post will show how to write this at the end of a text file. 

Some comments on the above code:
a) the character \t means "insert tab in text string"
b) the character \n means "insert line break"
c) the string '%Y-%m-%d' formats the date to ISO standard
d) adding string elements works in the obvious way: 'foo'+'bar'='foobar'



No comments:

Post a Comment