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

Python argparse:访问子目录中的所有文件,python,argparse,Python,Argparse,我正在尝试编写一个python脚本,在子目录中包含几个文本文件,例如 python script.py --inputdir ~/subdirectory 它将执行此子目录中的每个文件。如何使用argparse来实现这一点?您是否应该编写一个函数来访问和打开每个文件 import argparse parser = argparse.ArgumentParser() parser.add_argument("--inputdir", help="path to your subdirector

我正在尝试编写一个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
?如何提取文件

这不是
argparse
的工作

用于递归迭代文件

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`

这不是
argparse
的工作

用于递归迭代文件

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`
如何使用argparse来实现这一点?您是否应该编写一个函数来访问和打开每个文件

import argparse
parser = argparse.ArgumentParser()
parser.add_argument("--inputdir", help="path to your subdirectory",
                    required=True)
args = parser.parse_args()
这听起来很有可能,因为argparse实际上不需要知道如何处理命令行参数——只需要知道如何获取它们。它可能看起来像:

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)
在这里,我假设您的目录只包含文件(而不是更多的目录)。如果它确实包含更多的目录,您将希望过滤掉这些目录(可能使用
os.path.isdir

如何使用argparse来实现这一点?您是否应该编写一个函数来访问和打开每个文件

import argparse
parser = argparse.ArgumentParser()
parser.add_argument("--inputdir", help="path to your subdirectory",
                    required=True)
args = parser.parse_args()
这听起来很有可能,因为argparse实际上不需要知道如何处理命令行参数——只需要知道如何获取它们。它可能看起来像:

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)

在这里,我假设您的目录只包含文件(而不是更多的目录)。如果它确实包含更多的目录,您将希望过滤掉这些目录(可能使用
os.path.isdir
)。

定义“执行”--您的意思是“对于每个文件,都执行./file”,您希望python将每个文件导入到解释器会话中,还是需要先调用执行过程(例如
/my_script.sh
python my_file.py
)?定义“执行”--您的意思是“对于每个文件,执行/文件”,您希望python将每个文件导入到解释器会话中,还是之前需要调用执行过程(例如
/my_script.sh
my_file.python
)?@山正阳,谢谢你的反馈。我及时更新了答案。@山正阳,谢谢你的反馈。我及时更新了答案。