发布
社区首页 >问答首页 >循环遍历python中的特定文件

循环遍历python中的特定文件
EN

Stack Overflow用户
提问于 2013-02-03 20:08:04
回答 2查看 467关注 0票数 1

因此,我有一个脚本,在其中循环遍历文件夹中的一组文件。在检索该特定目录中的文件列表后,如何指定要在脚本中使用哪些文件?

代码语言:javascript
代码运行次数:0
复制
target = './directory/'

for file in listdir(target):

现在,我在同一个文件夹中有几个不同的文件。

  • kplr006933899-2009131105131_llc.fits
  • kplr006933899-2009131105131_lpd-targ.fits
  • kplr006933899-2012151031540_slc.fits
  • kplr006933899-2012151031540_spd-targ.fits

它们都是由"kplr006933899".表示的同一个组的一部分。如何将字符串的部分指定为不同的变量,以便指定要循环遍历的文件?

例如:

代码语言:javascript
代码运行次数:0
复制
def function(name,types)

当被调用时,您可以在其中写到:

代码语言:javascript
代码运行次数:0
复制
function(kplr006933899,[slc,llc])
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-02-03 20:19:50

有多种方法可以做到这一点。第一条路:

代码语言:javascript
代码运行次数:0
复制
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

代码语言:javascript
代码运行次数:0
复制
result = []
for t in types:
    result.extend(glob.glob("{}/{}*{}.fits".format(target, name, t)))
return result
票数 3
EN

Stack Overflow用户

发布于 2013-02-03 20:14:10

代码语言:javascript
代码运行次数:0
复制
>>> "kplr" in  "kplr006933899-2009131105131_llc.fits"
True
>>> 
>>> "kplR" in  "kplr006933899-2009131105131_llc.fits"
False
>>> 

注意,您需要放置引号来表示字符串function("kplr006933899", [slc, llc]),否则kplr006933899将被解释为变量。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14676747

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档