2

我在从 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()

有谁知道我哪里出错了?

4

2 回答 2

7

完全相同,请参阅此问题以了解原因。

你有(至少)2个选项:

  1. args作为参数传递给您的函数
  2. args一个全局变量。

我不确定其他人是否同意,但我个人会将所有解析器功能移到if语句中,即主要看起来像:

def main(args):
    printip3octets(args)
    printip(args)
于 2011-02-19T13:08:05.360 回答
2

args是 main() 中的局部变量 - 您需要将其作为参数传递以在其他函数中使用它。

...
printip3octets(args)

def printip3octets(args):

    print args.ip3octets
...
于 2011-02-19T13:07:08.147 回答