Python错误:以下参数是必需的

时间:2018-07-04 11:00:02

标签: python python-import argparse args

我有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

2 个答案:

答案 0 :(得分:2)

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

进行调用
parser.parse_args(args)

不只是

parser.parse_args()

答案 1 :(得分:0)

如果您的主要不是def /函数,则可以模拟传入的args:

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:])