-5
import sys
#print sys.argv[1]
def IndexSearchString():


    This function search a string in a file through index and gives the result.



    #fieldindex = int(sys.argv[1])-1
    stringsrch = sys.argv[2]
    #size = len(sys.argv)
    file_name = open("passwd", "r")
    #print "No of Argu ", size
    ''' 
    if sys.argv[1] == Null:
        print "Please enter argument"   
    '''
    if sys.argv[1].isdigit():
        fieldindex = int(sys.argv[1])-1
    else:
        print "Enter integer in 1st Argument"
        sys.exit(1)
    fieldindex = int(sys.argv[1])-1

    stringsrch = sys.argv[2]

    if len(sys.argv) > 3 :
        print "Enter two arguments only"
        sys.exit(1)

    for store_file in file_name:
        temp = store_file.split(":")
        search = temp[fieldindex]
        #print search 

        if stringsrch in search:
            print store_file

IndexSearchString()
    '''
    My Question is:
    I am taking two argument in the command line. Now I want to handle when only one     argument is given and also when no argument is given.
    Help me out 

    Error:
    Command Window Input: python SearchString.py 1 
    Traceback (most recent call last):
    File "SearchString.py", line 46, in <module>
    IndexSearchString() 
    File "SearchString.py", line 36, in IndexSearchString
    stringsrch = sys.argv[2]
    IndexError: list index out of range
    '''
Kimvais
  • 38,306
  • 16
  • 108
  • 142
user2865801
  • 15
  • 1
  • 4

4 Answers4

0

this

stringsrch = sys.argv[2]

should probably be this

stringsrch = sys.argv[1]

because no other place do you use

sys.argv[2]

mjz19910
  • 244
  • 1
  • 13
0

in your Opinion: you should start with 0 in sys.argv

Josh Crozier
  • 233,099
  • 56
  • 391
  • 304
micheal.yxd
  • 118
  • 1
  • 7
0

check this question out and see if it can help
python and sys.argv
add this after your "def..."

if len(sys.argv) < 3 :
  print "Please enter two arguments"
  sys.exit(1)

and change your other one

if len(sys.argv) > 3 :
        print "Enter two arguments only"
        sys.exit(1)

to

if len(sys.argv) > 4 :
        print "Enter only two arguments after the program"
        sys.exit(1)

even easier

if len(sys.argv) >= 0 | len(sys.argv) < 3 :
  fieldindex = int(sys.argv[1])-1  
else:
  sys.exit("enter up to 2 args")
Community
  • 1
  • 1
mjz19910
  • 244
  • 1
  • 13
0

Do not re-invent the wheel, but use one of the existing python command line argument parsers:

Kimvais
  • 38,306
  • 16
  • 108
  • 142