argparse Python 2.7中一个参数的多个文件 - python

尝试在argparse中创建一个参数,以便可以输入多个可以读取的文件名。
在此示例中,我只是尝试打印每个文件对象以确保其正常工作,但出现错误:

error: unrecognized arguments: f2.txt f3.txt

。我怎样才能认出所有人?

我在终端中的命令来运行程序并读取多个文件

python program.py f1.txt f2.txt f3.txt

Python脚本

import argparse

def main():
    parser = argparse.ArgumentParser()      
    parser.add_argument('file', nargs='?', type=file)
    args = parser.parse_args()

    for f in args.file:
        print f

if __name__ == '__main__':
    main()

我使用了nargs='?' b / c,希望它可以是可以使用的任意数量的文件。如果我将add_argument更改为:

parser.add_argument('file', nargs=3)

然后我可以将它们打印为字符串,但无法与'?'一起使用

参考方案

如果您的目标是读取一个或多个可读文件,则可以尝试以下操作:

parser.add_argument('file', type=argparse.FileType('r'), nargs='+')

nargs='+'将所有命令行参数收集到一个列表中。还必须有一个或多个参数,否则将生成错误消息。
type=argparse.FileType('r')尝试将每个参数作为文件打开以供读取。如果argparse无法打开文件,它将生成一条错误消息。您可以使用它来检查参数是否为有效且可读的文件。

另外,如果您的目标是读取零个或更多可读文件,则可以简单地将nargs='+'替换为nargs='*'。如果没有提供命令行参数,这将为您提供一个空列表。如果没有任何文件,也许您可​​能想打开stdin-如果是这样,只需将default=[sys.stdin]作为参数添加到add_argument即可。

然后处理列表中的文件:

args = parser.parse_args()
for f in args.file:
    for line in f:
        # process file...

有关nargs的更多信息:
https://docs.python.org/2/library/argparse.html#nargs

有关类型的更多信息:https://docs.python.org/2/library/argparse.html#type

Python Argparse:带有负数的可选参数的问题 - python

我在argparse时遇到了一个小问题。我有一个xlim选项,它是情节的xrange。我希望能够传递类似-2e-5的数字。但是,这不起作用-argparse将其解释为位置参数。如果我执行-0.00002,则可以使用:argparse将其读取为负数。是否可以读取-2e-3?下面的代码,和我将如何运行它的一个示例是:./blaa.py --xlim -2.e-3…

在返回'Response'(Python)中传递多个参数 - python

我在Angular工作,正在使用Http请求和响应。是否可以在“响应”中发送多个参数。角度文件:this.http.get("api/agent/applicationaware").subscribe((data:any)... python文件:def get(request): ... return Response(seriali…

Python exchangelib在子文件夹中读取邮件 - python

我想从Outlook邮箱的子文件夹中读取邮件。Inbox ├──myfolder 我可以使用account.inbox.all()阅读收件箱,但我想阅读myfolder中的邮件我尝试了此页面folder部分中的内容,但无法正确完成https://pypi.python.org/pypi/exchangelib/ 参考方案 您需要首先掌握Folder的myfo…

argparse参数顺序 - python

我有一点问题。我使用argparse解析我的参数,并且运行良好。要拥有args,我这样做:p_args = parser.parse_args(argv) args = dict(p_args._get_kwargs()) 但是p_args的问题是我不知道如何根据命令行中的位置来排列这些参数,因为这是命令。那么,是否有可能在命令行中将参数放在元组/列表/有序…

如何处理可能是一个值或多个值的输入参数? - python

我正在使用有人编写的来自GitHub的脚本,该脚本是为命令行设计的。所有示例均显示如下内容:thisscript.py -u 'teepee' -p pword999 -d 8 我想在另一个函数中运行它,在这里我可以像这样使用它:thisscript(username='teepee', password='…