首页 > 解决方案 > 如何将解析的参数转换为可以在 if 语句中使用的变量?

问题描述

我正在使用来自https://github.com/tensorflow/models/blob/master/tutorials/image/imagenet/classify_image.py的教程 imagenet 图像识别代码

到目前为止,我已经设法让一切正常工作,但我想知道如何以列表或字符串的形式获取最后的参数,而不是解析的参数,这样我就可以对它们使用正常的 if 命令。

def main(_):
  maybe_download_and_extract()
  image = (FLAGS.image_file if FLAGS.image_file else
           os.path.join(FLAGS.model_dir, 'cropped_panda.jpg'))
  run_inference_on_image(image)


if __name__ == '__main__':
  parser = argparse.ArgumentParser()
  # classify_image_graph_def.pb:
  #   Binary representation of the GraphDef protocol buffer.
  # imagenet_synset_to_human_label_map.txt:
  #   Map from synset ID to a human readable string.
  # imagenet_2012_challenge_label_map_proto.pbtxt:
  #   Text representation of a protocol buffer mapping a label to synset ID.
  parser.add_argument(
      '--model_dir',
      type=str,
      default='/tmp/imagenet',
      help="""\
      Path to classify_image_graph_def.pb,
      imagenet_synset_to_human_label_map.txt, and
      imagenet_2012_challenge_label_map_proto.pbtxt.\
      """
  )
  parser.add_argument(
      '--image_file',
      type=str,
      default='',
      help='Absolute path to image file.'
  )
  parser.add_argument(
      '--num_top_predictions',
      type=int,
      default=5,
      help='Display this many predictions.'
  )

  #how do i get a variable that i can interact with from this:
  FLAGS, unparsed = parser.parse_known_args()
  tf.app.run(main=main, argv=[sys.argv[0]] + unparsed)

任何帮助将不胜感激。

标签: pythonparametersargparsevariadic-functions

解决方案


您可以使用 获取参数的字典视图vars

argparse 文档中的一个示例(https://docs.python.org/3/library/argparse.html):

>>> args = parser.parse_args(['--foo', 'BAR'])
>>> vars(args)
{'foo': 'BAR'}

因此,您应该能够执行以下操作:

arg_dict = vars(FLAGS)

推荐阅读