因此,我有一个脚本,在其中循环遍历文件夹中的一组文件。在检索该特定目录中的文件列表后,如何指定要在脚本中使用哪些文件?
target = './directory/'
for file in listdir(target):
现在,我在同一个文件夹中有几个不同的文件。
它们都是由"kplr006933899".表示的同一个组的一部分。如何将字符串的部分指定为不同的变量,以便指定要循环遍历的文件?
例如:
def function(name,types)
当被调用时,您可以在其中写到:
function(kplr006933899,[slc,llc])
发布于 2013-02-03 20:19:50
有多种方法可以做到这一点。第一条路:
import fnmatch
def my_function(name, types):
result = []
for t in types:
pattern = "{}*{}.fits".format(name, t)
for filename in fnmatch.filter(listdir(target), pattern):
result.append(filename)
return result
您可以使用:my_function("kplr006933899", ["slc", "llc"])
调用此函数。fnmatch.filter
函数执行与模式和给定文件名的模式匹配。
第二种方法是使用glob
result = []
for t in types:
result.extend(glob.glob("{}/{}*{}.fits".format(target, name, t)))
return result
发布于 2013-02-03 20:14:10
>>> "kplr" in "kplr006933899-2009131105131_llc.fits"
True
>>>
>>> "kplR" in "kplr006933899-2009131105131_llc.fits"
False
>>>
注意,您需要放置引号来表示字符串function("kplr006933899", [slc, llc])
,否则kplr006933899
将被解释为变量。
https://stackoverflow.com/questions/14676747
复制相似问题