我在一个目录中有一个文件目录,命名如下:
tx01.data
tx02.data
tx03.data
当我从命令行调用这个模块时,我想传入一个参数来只读取这些文件的一个子集范围,例如 tx01.data 和 tx02.data(它总是一个连续的范围,而不是随机选择的文件)。
我目前正在使用glob
读取目录中的所有文件。从我发现的情况来看glob
,子集并不能很好地发挥作用。我找到的最接近的是这个答案。
有没有更好的方法来读取可以从命令行传入的子集范围?
这应该为您完成工作:
import argparse
import re
from os import listdir
if __name__ == "__main__":
parser = argparse.ArgumentParser(description='Process some files.')
parser.add_argument("--range", type=str, help='file range (i.e. 0-100)', default='0-100')
args = parser.parse_args()
try:
file_range = list(map(int, args.range.split('-')))
except Exception as e:
raise Exception('Invalid parameter format...\n%s' % e)
dir_files = listdir('.')
matches_list = list(map(lambda x: re.match(r'm([0-9]+)\.data', x), dir_files))
files = [x.group() for x in matches_list if x and (file_range[0] <= int(x.groups()[0]) <= file_range[1])]
print(files)
该命令应如下所示:
python script.py --range 0-200
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句