解析多个文件 argparse
Posted
技术标签:
【中文标题】解析多个文件 argparse【英文标题】:Parsing Multiple files argparse 【发布时间】:2020-04-09 00:10:14 【问题描述】:我无法弄清楚如何通过我的程序解析多个文件。截至目前,我可以解析一个单一的文件并毫无问题地填充我的字典。但是我正在努力通过我的脚本解析多个文件。当使用通配符 (*.txt) 包含几个用于解析的文件时,我的程序就像只解析一个文件(假设它是该组中的第一个或最后一个文件)。如何使用我的程序来迭代文件列表而不是单个文件。
下面的代码显示了我的解析参数以及如何将文件传递到__init__
def __init__(self, file):
self.file = file
def main(argv):
parser = argparse.ArgumentParser()
parser.add_argument("-f", "--file", dest="input_file", required = True,
help="The binary file to be writen to flash")
parser.add_argument('file', type=argparse.FileType('wb'), nargs='*')
args = parser.parse_args(argv)
fault_finder = FaultList(args.input_file)
if __name__ == '__main__':
main(sys.argv[1:])
我假设我需要遍历已解析文件的列表,但我不确定如何。
【问题讨论】:
您的解析器需要一个输入文件名、'-f' 后面的字符串以及要写入的多个文件名('*' 位置)。由于FileType
规范,它会创建并打开这些输出文件。但是由于您不使用args.file
,因此您没有对这些输出文件做任何事情。我们不知道FaultList
对您传递的一个输入文件名做了什么。
【参考方案1】:
您可以将glob
与argparse
结合使用以获取与通配符匹配的所有文件的列表。
import argparse
from glob import glob
def main(file_names):
print file_names
if __name__ == "__main__":
parser = argparse.ArgumentParser()
parser.add_argument("file_names", nargs='*')
#nargs='*' to combine all positional arguments into a single list
args = parser.parse_args()
file_names = []
# use glob to find files matching wildcards
#if a string does not contain a wildcard, glob will return it as is.
for arg in args.file_names:
file_names += glob(arg)
main(file_names)
【讨论】:
以上是关于解析多个文件 argparse的主要内容,如果未能解决你的问题,请参考以下文章