【问题标题】:Using Argparse in python [closed]在 python 中使用 Argparse [关闭]
【发布时间】:2013-06-11 07:35:08
【问题描述】:

我有一个简单的问题。在简单的模块 import sys 中,您可以像这样识别参数的位置:

    if len(sys.argv)==2:
       csvFile = sys.argv[1]

这使您可以将用户在命令行中输入的第二个参数存储到变量 csvFile 中。我只是想知道您将如何使用 argparse 模块执行此操作,因为当我尝试使用 if len(sys.argv)==2 使用 argparse 时,它​​给了我一个错误:'module' has no attribute 'args'

【问题讨论】:

  • 该异常与len(sys.argv)没有任何关系,但看起来您打错了:例如,len(sys.args) 会抛出该异常。
  • 你是如何使用argparse的?
  • 我想使用的是它基本上是写类似 -x file.csv 的东西,然后将文件转换为 xml。为此,我需要找到 file.csv 的位置,所以在这种情况下,csvFile = sys.argv[1] 这意味着 file.csv 保存在变量 csvFile
  • “我想如何使用它”和“我实际上如何尝试使用它”是两个不同的东西。当您声称您的代码产生错误时,最好显示产生错误的确切代码。

标签: python python-2.7 command-line-arguments argparse


【解决方案1】:

使用 argparse,您不必担心参数的位置,让模块为您完成工作

import argparse
parser = argparse.ArgumentParser()
parser.add_argument('-x')

现在,模拟将 -x 文件名 作为命令行的一部分传递,例如

parser.parse_args(['-x','filename'])

导致Namespace(x='filename')

如果-x参数没有出现,如下:

parser.parse_args([])

这将导致Namespace(x=None)

有关使用这个强大库的更多详细信息,请参阅argparse module documentation

【讨论】:

    猜你喜欢
    • 2012-07-26
    • 2013-03-20
    • 2016-07-07
    • 2012-04-16
    • 2011-05-13
    • 1970-01-01
    • 2012-08-20
    • 2017-03-20
    • 1970-01-01
    相关资源
    最近更新 更多