This is a python script that surveys the $scohtm/index.html file and pulls out the recognized task names. It is probably over-written, but was really an early attempt at writing a python code that uses functions to slice and recognize substrings in lines of text. Hence, I show a sample below on a portion of my index.html file, and then I show the complete python code. The output values: code_name and code_type can be directed to a file, which in turn might be fed to a shell script for further processing. For intsance, one of the prime motivations was writing a script that would insure that that all of the python codes present in my $scohtm listing do, in fact, have executables present on the machine being used. With the output from scocodes1.py I can easily tabulae my python codes, and then build/run a script to insure that they will run.
% scocodes1.py T2 Name Source 2mass_00.py python 2mass02 bash boxpix otw calstats.py python XYP lmgf % cat T2
| Name | Source | Task (Link) | Extra Comments |
| 2mass_00.py | python | Process a 2MASS catalog. | Creates a cdfp file. |
| 2mass02 | bash | Query 2MASS PSC | Output to 2mass.cat. |
| boxpix | otw | Write image pixels in a box | O2SO |
| calstats.py | python | Compute simple statistics. | O2SO |
| XYP | lmgf | Interactively plot XY data. | Uses ASCII tables for input |
Notice that this code has not been refined. I must have white-space around the code names in order for them to be properly recognized. For example, the first line below will work properly, but the second will NOT:
#!/usr/bin/python
def line_look_00(words):
nn = len(words)
return nn
def line_look_trSTART(line):
start = line.find('')
return start
def line_look_trEND(line):
start = line.find(' ')
return start
def getit_codename(line):
words = line.split(' ')
mytask = words[2]
return mytask
# Read and use a scocodes html file (Table) of codes
# Setup to read the name of the input file
from sys import argv
script_name, scocodefile = argv
# Read the ENTIRE file into lines
# Open the files for read-only
fall = open(scocodefile,'r')
lines = fall.readlines()
fall.close()
nlines = len(lines)
# scan each line and do things
ii = 0
trs=[]
tre=[]
for line in lines:
ii=ii+1
words = line.split()
# Use a function to count number of words
number_of_words = line_look_00(words)
# count the "" occurences
numtr = line_look_trSTART(line)
trs.append(numtr)
numte = line_look_trEND(line)
tre.append(numte)
############################################################
# loop through the trs,tre arrays to see how many
# sets of and were present
ii = 0
while True:
if ii < nlines:
numostart = trs[ii]
else:
break
ii=ii+1
############################################################
nstarts = 0
startline=[]
ii = 0
while True:
if ii < nlines-5:
if (trs[ii]==0) and (tre[ii+5]==0):
nstarts=nstarts+1
startline.append(ii)
else:
break
ii=ii+1
ii = 0
while True:
if ii < nstarts:
iw = startline[ii] + 1
task_name = getit_codename(lines[iw])
task_type = getit_codename(lines[iw+1])
print "%s %s" % (task_name,task_type)
else:
break
ii=ii+1
Some more advanced versions of this code will be developed
to help maintain my code table(s), but the basics are here.