#!/usr/bin/env python3 import argparse , sys # create parser parser = argparse.ArgumentParser( description='count occurence of a string in a text file', epilog = 'please report comments/bugs to arlotto@univ-tln.fr') #position 1 required parser.add_argument('filename') #position 2 optional count total number of chars if not given parser.add_argument('string', nargs='?',default='') #option case sensitive parser.add_argument('-i','--ignorecase', action='store_true',help='ignore case when search') args = parser.parse_args() #~ print(args) filename = args.filename string = args.string ignorecase = args.ignorecase try : f=open(filename) except : print('Unable to open',filename) sys.exit(-1) if string == '' : n=0 while 1 : c=f.read(1) if c=='': break n+=1 print(n) sys.exit(0) # brute force algorithm if ignorecase == True : string = string.upper() i=0 n=0 while 1 : c=f.read(1) if c =='': break if ignorecase == True : c = c.upper() if c==string[i] : i+=1 else : i=0 if i==len(string) : n+=1 i=0 elif i > len(string) : print('ooops internal error!') sys.exit(-1) print(n)