Python error: the following arguments are required
Python error: the following arguments are required
我的 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
当使用不是来自 sys.argv
的参数调用 argparse
时,您必须使用
来调用它
parser.parse_args(args)
而不仅仅是
parser.parse_args()
如果您的 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:])
我的 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
当使用不是来自 sys.argv
的参数调用 argparse
时,您必须使用
parser.parse_args(args)
而不仅仅是
parser.parse_args()
如果您的 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:])