嘿伙计们,我在从argpars调用函数时遇到了问题。这是我的脚本的简化版本,这适用于打印我给出的任何值-s或-p
import argparse def main(): parser = argparse.ArgumentParser(description="Do you wish to scan for live hosts or conduct a port scan?") parser.add_argument("-s", dest='ip3octets', action='store', help='Enter the first three octets of the class C network to scan for live hosts') parser.add_argument("-p", dest='ip', action='store',help='conduct a portscan of specified host') args = parser.parse_args() print args.ip3octets print args.ip
然而,这对我来说在逻辑上相同会产生错误:
import argparse def main(): parser = argparse.ArgumentParser(description="Do you wish to scan for live hosts or conduct a port scan?") parser.add_argument("-s", dest='ip3octets', action='store', help='Enter the first three octets of the class C network to scan for live hosts') parser.add_argument("-p", dest='ip', action='store',help='conduct a portscan of specified host') args = parser.parse_args() printip3octets() printip() def printip3octets(): print args.ip3octets def printip(): print args.ip if __name__ == "__main__":main()
有谁知道我哪里出错了?非常感谢!
答案 0 :(得分:6)
不相同,请参阅this question了解原因。
您有(至少)2个选项:
args
作为参数传递给您的函数args
设为全局变量。我不确定其他人是否同意,但我个人会将所有解析器功能移到if
语句中,即主要看起来像:
def main(args):
printip3octets(args)
printip(args)
答案 1 :(得分:2)
args
是main()中的局部变量 - 您需要将其作为参数传递给其他函数使用它。
...
printip3octets(args)
def printip3octets(args):
print args.ip3octets
...