> Do you want to use optparse, or get the command line arguments yourself? > It seems the pattern string will be the first arg, will it?
Again I am confused. I assumed that optparse was the best way to pass in arguments (such as filenames) from the command line. Like so: ./script.py -x regex *.html > > rx = re.compile('-x') > > Then, if the note above is right, you have: > > pat_string = sys.argv[1] > rx = re.compile(pat_string) # pattern object > > Is that what you wish to do? Probablement. :) The below code does what I want: ------------------------------------------------------------------------------- #!/usr/bin/python import fileinput, sys, string # Take the first argument out of sys.argv and assign it to searchterm. searchterm, sys.argv[1:] = sys.argv[1], sys.argv[2:] for line in fileinput.input(): num_matches = line.count(searchterm) if num_matches: # A nonzero count means there was a match. print "found '%s' %d times in %s on line %d." % (searchterm, num_matches, fileinput.filename(), fileinput.filelineno()) ------------------------------------------------------------------------------- I wanted to use optparse instead of sys.argv. Perhaps I should study fileinput instead. I don't understand that either. > > for line in fileinput.input(): > > num_matches = string.count(line, rx) > Above you are counting the number of *regex pattern* may be inside a > string. Not the number of (sub)strings matching the pattern, which is > probably what you intend.[ Also, you are using a deprecated function > "count" of the string module. Use line.count(substring) instead. Anyway, > this is probably not what you want.] > To count the number of pattern matches, you must use the > "matching" (lol) regex method, namely findall: > > result_list = rx.findall(line) > > > if num_matches: > > print "found '%s' %d times in %s on line %d." % (rx, num_matches, > > fileinput.filename(), fileinput.filelineno()) > > Do you want to print only the last match? If not, you need to record > matches found by the search loop into a list. > > > #if __name__ == '__main__': > > #main() > > > _______________________________________________ > Tutor maillist - Tutor@python.org > http://mail.python.org/mailman/listinfo/tutor -- I fear you speak upon the rack, Where men enforced do speak anything. - William Shakespeare _______________________________________________ Tutor maillist - Tutor@python.org http://mail.python.org/mailman/listinfo/tutor