【问题标题】:Python error: the following arguments are requiredPython 错误:需要以下参数
【发布时间】:2018-12-12 19:13:15
【问题描述】:

我的 Python 脚本在通过命令行执行时运行良好。 我想要做的是将此脚本导入另一个 python 文件并从那里运行它。

问题在于初始脚本需要参数。它们的定义如下:

#file one.py
def main(*args):
   import argparse

   parser = argparse.ArgumentParser(description='MyApp')
   parser.add_argument('-o','--output',dest='output', help='Output file image', default='output.png')
   parser.add_argument('files', metavar='IMAGE', nargs='+', help='Input image file(s)')

   a = parser.parse_args()

我将此脚本导入另一个文件并传递参数:

#file two.py
import one
one.main('-o file.png', 'image1.png', 'image2.png')

但是虽然我将输入图像定义为参数,但仍然出现以下错误:

usage: two.py [-h] [-o OUTPUT] 
          IMAGE [IMAGE ...]
two.py: error: the following arguments are required: IMAGE

【问题讨论】:

    标签: python python-import argparse args


    【解决方案1】:

    当使用不是来自sys.argv 的参数调用argparse 时,您必须使用

    parser.parse_args(args)
    

    而不仅仅是

    parser.parse_args()
    

    【讨论】:

      【解决方案2】:

      如果您的 MAIN 不是 def / 函数,您可以模拟传入的参数:

      if __name__=='__main__':
      
          # Set up command-line arguments
          parser = ArgumentParser(description="Simple employee shift roster generator.")
          parser.add_argument("constraints_file", type=FileType('r'),
                              help="Configuration file containing staff constraints.")
          parser.add_argument("first_day", type=str,
                              help="Date of first day of roster (dd/mm/yy)")
          parser.add_argument("last_day", type=str,
                              help="Date of last day of roster (dd/mm/yy)") 
      
          #Simulate the args to be expected...   <--- SEE HERE!!!
          argv = ["",".\constraints.txt", "1/5/13", "1/6/13"]
      
          # Parse arguments
          args = parser.parse_args(argv[1:])
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-01-11
        • 2019-05-26
        • 1970-01-01
        • 2023-02-09
        • 2021-07-12
        • 1970-01-01
        • 2021-12-18
        • 2021-11-06
        相关资源
        最近更新 更多