使用argparse调用函数

Eol*_*Eol 2 python function argparse

嘿伙计们,我遇到了从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()

有谁知道我哪里出错了?非常感谢!

Kim*_*ais 7

完全相同,请参阅此问题以解释原因.

你有(至少)2个选择:

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

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

def main(args):
    printip3octets(args)
    printip(args)
Run Code Online (Sandbox Code Playgroud)