无效语法 - python
我有一组参数,它们的所有目标都是 'search_and'、'search_not'、'search_start'、'search_then' 和 'filename'
我必须捕获错误的代码是
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()
它可能看起来像一个愚蠢的错误,有人可以告诉我发生了什么事吗?
编辑#1: 我在末尾添加了“)”以确保它正确关闭,但它仍然显示无效语法。
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)):
编辑#2: 这是我到目前为止所拥有的。
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)):
代码运行后: python script.py -a hi bye
我的 if 语句语法无效。
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.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
if 语句之前的行
没有结束语 )。
Python 解释器通常会在下一行中抱怨此类语法错误。因此,如果在任何行中出现语法错误,建议也检查前一行
The line before the if statement
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
这相当于您正在尝试做的事情,并且可能稍微更具可读性
This is equivalent to what you're trying to do, and may be slightly more readable
您在
:
之前错过了)
。你的编辑应该能够发现这些错误。You missed a
)
before the:
. Your editor should be catching these sort of mistakes.如果 options.filename 为 None 且 ((options.search_and 为 None) 或 (options.search_not 为 None) 或 (options.search_start 为 None) 或 (options.search_then 为 None))
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))
在您的原始语句中,“( options.filename is None)”您应该删除最后一个“)”,将该代码替换为:
这应该可以修复您的语法错误。
In your original statement, "( options.filename is None)" you should remove the last ")" make replace that code with:
That should fix your syntax error.