Python 解析多个文件argparse
我不知道如何通过我的程序解析多个文件。到目前为止,我可以解析一个单一的文件并填充我的字典,没有任何问题。但是,我正在努力通过脚本解析多个文件。当使用通配符(*.txt)包含用于解析的多个文件时,我的程序将充当只解析一个文件的角色(假定它是该组中的第一个或最后一个文件)。我如何使用我的程序来迭代文件列表,而不仅仅是一个文件 下面的代码显示了我的解析参数以及如何将文件传递到Python 解析多个文件argparse,python,parsing,argparse,Python,Parsing,Argparse,我不知道如何通过我的程序解析多个文件。到目前为止,我可以解析一个单一的文件并填充我的字典,没有任何问题。但是,我正在努力通过脚本解析多个文件。当使用通配符(*.txt)包含用于解析的多个文件时,我的程序将充当只解析一个文件的角色(假定它是该组中的第一个或最后一个文件)。我如何使用我的程序来迭代文件列表,而不仅仅是一个文件 下面的代码显示了我的解析参数以及如何将文件传递到\uuuu init\uuuu def __init__(self, file): self.file = file
\uuuu init\uuuu
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:])
我假设我需要遍历已解析文件的列表,但我不确定如何进行。您可以将
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)
您的解析器需要一个输入文件名、'-f'后面的字符串和多个要写入的文件名(位置'*')。由于
FileType
规范,它创建并打开这些输出文件。但是,由于您不使用args.file
,因此您没有对这些输出文件执行任何操作。我们不知道FaultList
对您传递的一个输入文件名做了什么。