argparse:访问子目录中的所有文件

时间:2015-12-14 16:21:06

标签: python argparse

我正在尝试在子目录中编写一个包含多个文本文件的python脚本,例如:

python script.py --inputdir ~/subdirectory

将执行此子目录中的每个文件。如何使用argparse来做到这一点?你应该写一个函数来访问和打开每个文件吗?

import argparse
parser = argparse.ArgumentParser()
parser.add_argument("--inputdir", help="path to your subdirectory",
                    required=True)
args = parser.parse_args()

现在,我该如何处理args.inputdir?如何提取文件?

2 个答案:

答案 0 :(得分:0)

这不是argparse的工作。

使用os.walk递归迭代文件。

import os

for parent, dirnames, filenames in os.walk(args.inputdir):
    for fn in filenames:
        filepath = os.path.join(parent, fn)
        with open(filepath) as f:
            # Do something with `f`

答案 1 :(得分:0)

  

如何使用argparse来做到这一点?你应该写一个函数来访问和打开每个文件吗?

听起来很可能因为argparse不需要知道如何处理命令行参数 - 只是如何获取它们。它可能看起来像:

"Mohammad".ToCharArray().Select(c => c.ToString()).ToArray()

这里我假设您的目录只包含文件(不是更多目录)。如果它确实包含更多目录,您将要过滤掉这些目录(可能使用def process_file(filename): with open(filename, 'r') as file_input: pass # do something here . . . def process_directory(directory_name): for filename in os.listdir(directory_name): process_file(os.path.join(directory_name, filename)) process_directory(args.inputdir) )。