gpt4 book ai didi

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

转载 作者:IT老高 更新时间:2023-10-28 20:31:18 29 4
gpt4 key购买 nike

尝试在 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='*'。如果没有提供命令行参数,这将为您提供一个空列表。如果您没有获得任何文件,也许您可​​能想要打开标准输入 - 如果是这样,只需将 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 2.7中一个参数的多个文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26727314/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com