尝试学习如何使用outparse。所以情况就是这样,我认为我的设置正确,它只是如何设置我的选择有点......让我感到困惑。基本上我只想查看我的文件名,看看是否有特定的字符串。
例如:
python script.py -f filename.txt -a hello simple
我希望它返回类似......
Reading filename.txt....
The word, Hello, was found at: Line 10
The word, simple, was found at: Line 15
这是我到目前为止所做的,我只是不知道如何正确设置它。很抱歉问愚蠢的问题:P。提前谢谢。
到目前为止,这是代码:
from optparse import OptionParser
def main():
usage = "useage: %prog [options] arg1 arg2"
parser = OptionParser(usage)
parser.add_option_group("-a", "--all", action="store", type="string", dest="search_and", help="find ALL lines in the file for the word1 AND word2")
(options, args) = parser.parse_args()
if len(args) != 1:
parser.error("not enough number of arguments")
#Not sure how to set the options...
if __name__ == "__main__":
main()
答案 0 :(得分:2)
你应该使用OptionParser.add_option()
... add_option_group()
没有做你认为它做的事情......这是你所追求的精神的一个完整的例子......请注意--all
依赖于逗号分隔值...这使得它更容易,而不是使用空格分隔(这需要引用--all
的选项值。
另请注意,您应明确检查options.search_and
和options.filename
,而不是检查args
的长度
from optparse import OptionParser
def main():
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("-f", "--file", type="string", dest="filename", help="Name of file")
(options, args) = parser.parse_args()
if (options.search_and is None) or (options.filename is None):
parser.error("not enough number of arguments")
words = options.search_and.split(',')
lines = open(options.filename).readlines()
for idx, line in enumerate(lines):
for word in words:
if word.lower() in line.lower():
print "The word, %s, was found at: Line %s" % (word, idx + 1)
if __name__ == "__main__":
main()
使用相同的示例,使用... python script.py -f filename.txt -a hello,simple