Python argparse:访问子目录中的所有文件
我正在尝试编写一个python脚本,在子目录中包含几个文本文件,例如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 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
)?@山正阳,谢谢你的反馈。我及时更新了答案。@山正阳,谢谢你的反馈。我及时更新了答案。