Reputation: 139
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.
Upvotes: 2
Views: 23713
Reputation: 4745
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
Upvotes: 4
Reputation: 8285
In your original statement, "( options.filename is None)" you should remove the last ")" make replace that code with:
(options.filename is None
That should fix your syntax error.
Upvotes: 0
Reputation: 8285
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))
Upvotes: 0
Reputation: 362478
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()
Upvotes: 1
Reputation: 798456
You missed a )
before the :
. Your editor should be catching these sort of mistakes.
Upvotes: 0