除了我在下面实现的内容之外,还有更好的方法来定制glob.glob列表吗?
csvList = []
if glob.glob(filepath + '\\*US-CIR.csv'):
csvList.append(glob.glob(filepath + '\\*US-CIR.csv')[0])
if glob.glob(filepath + '\\*US-PIR.csv'):
csvList.append(glob.glob(filepath + '\\*US-PIR.csv')[0])
if glob.glob(filepath + '\\*DS-PIR.csv'):
csvList.append(glob.glob(filepath + '\\*DS-PIR.csv')[0])
答案 0 :(得分:1)
csvList
可以由list comprehension定义:
csvList = [item for suffix in ('US-CIR', 'US-PIR', 'DS-PIR')
for item in glob.glob(filepath + '\\*{}.csv'.format(suffix))[:1]]
列表理解等同于:
csvList = []
for suffix in ('US-CIR', 'US-PIR', 'DS-PIR'):
for item in glob.glob(filepath + '\\*{}.csv'.format(suffix))[:1]:
csvList.append(item)
原始代码的主要缺点是它可能会多次重复对glob.glob
的同一次调用。它最多调用glob.glob
六次。上面的列表理解调用glob.glob
三次。
如果glob.glob(...)
返回空列表,则glob.glob(...)[:1]
也将为空,因此不会将任何项目添加到csvList
。如果它不是空的,那么glob.glob(...)[:1]
将只包含一个项目,此项目将添加到csvList
。