invalid syntax - python

22,756

Solution 1

The line before the if statement

parser.add_option("-f", "--file", type="string", dest="filename", help="file name"

does not have a closing ).

Python interpreter usually complains about such syntax errors in next line.So, if you get a syntax error at any line, it is advisable to check the preceding line as well

Solution 2

This is equivalent to what you're trying to do, and may be slightly more readable

if options.filename is None and None in [options.search_and, options.search_not, options.search_start, options.search_then]:
  parser.error(usage)
  sys.exit()
Share:
22,756
inoobdotcom
Author by

inoobdotcom

Updated on October 13, 2020

Comments

  • inoobdotcom
    inoobdotcom over 3 years

    I have a set of arguments and all of their dest is 'search_and', 'search_not', 'search_start', 'search_then', and 'filename'

    The code that I have to catch the error is

        if ( options.filename is None) and ( (options.search_and is None) or  (options.search_not is None) or (options.search_start is None) or (options.search_then is None):
            parser.error(usage)
            sys.exit()
    

    It may seem like a silly mistake, can someone tell me what is going on?

    EDIT#1: I added the ')' at the end to make sure it closes properly but it still says invalid syntax.

        if ( options.filename is None) and ( (options.search_and is None) or  (options.search_not is None) or (options.search_start is None) or (options.search_then is None)):
    

    EDIT#2: Here is what I have so far.

        import optparse from OptionParser
        usage = "useage: %prog [options]"
        parser = OptionParser(usage)
        parser.add_option("-a", "--all", type="string", dest="search_and", help="find ALL lines in the file for the word1 AND word2")
        parser.add_option("-b", "--all", type="string", dest="search_not", help="search and find the lines that contain words1 not word2")
        parser.add_option("-c", "--all", type="string", dest="search_start", help="search and find a line that starts with word1 or word2")
        parser.add_option("-d", "--all", type="string", dest="search_then", help="search and find a line that has word1 followed by word2")
        parser.add_option("-f", "--file", type="string", dest="filename", help="file name"
    
        if ( options.filename is None) and ( (options.search_and is None) or  (options.search_not is None) or (options.search_start is None) or (options.search_then is None)):
    

    After the code is run by: python script.py -a hi bye

    I get invalid syntax with the if statement.

  • Ignacio Vazquez-Abrams
    Ignacio Vazquez-Abrams over 12 years
    That's because you did the same sort of error (unbalanced brackets) elsewhere.
  • inoobdotcom
    inoobdotcom over 12 years
    Vazques-Abrams, I'll add what i have so far for the code. at edit#2 of the original post, give me a minute.
  • inoobdotcom
    inoobdotcom over 12 years
    I just don't see it. I'm constantly rewriting it but its just not working lol.
  • utapyngo
    utapyngo over 12 years
    @ino: now you missed a ) before if
  • Furbeenator
    Furbeenator over 12 years
    Still missing a ) at the end; should be: `if options.filename is None and ((options.search_and is None) or (options.search_not is None) or (options.search_start is None) or (options.search_then is None)):
  • Ignacio Vazquez-Abrams
    Ignacio Vazquez-Abrams over 12 years
    @Furbeenator: Yes, that's what I wrote.
  • Furbeenator
    Furbeenator over 12 years
    Well then why "@Furbeenator: Yes, that's what I wrote.?"
  • Ignacio Vazquez-Abrams
    Ignacio Vazquez-Abrams over 12 years
    When you see it, you'll sh*t bricks.