web-dev-qa-db-ja.com

Pythonエラー:次の引数が必要です

私は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()
4
Hans