只读给定图像序列路径中的第一个文件

时间:2017-10-31 23:27:48

标签: python

我的图像序列路径如下:/host_server/master/images/set01a/env_basecolor_default_v001/basecolor_default.*.jpg

  1. 以pythonic的方式,我是否可以根据给定的上述文件路径进行编码并让它读取第一个文件?

  2. 如果没有,我可以列出序列的整个序列,但仅列出该命名的序列吗?假设在同一目录中有另一个名为basecolor_default_beta.*.jpg的序列

  3. 对于#2,如果我使用os.listdir('/host_server/master/images/set01a/env_basecolor_default_v001'),它将列出两个图像序列的文件

3 个答案:

答案 0 :(得分:2)

最简单的解决方案似乎是使用多种功能。

1)要获取所有完整文件路径,请使用

 main_path = "/host_server/master/images/set01a/env_basecolor_default_v001/"
 all_files = [os.path.join(main_path, filename) for filename in os.listdir(main_path)]

2)要仅选择某种类型,请使用过滤器。

beta_files = list(filter(lambda x: "beta" in x, all_files))
beta_files.sort()

答案 1 :(得分:2)

  

根据给定的上述文件路径阅读第一个文件?

使用有效glob.iglob(pathname, recursive=False)(如果您需要找到第一个文件的名称/路径):

import glob

path = '/host_server/master/images/set01a/env_basecolor_default_v001/basecolor_default.*.jpg'
it = glob.iglob(path)
first = next(it)
  

glob.iglob() - 返回一个产生与之相同值的迭代器   glob()没有实际同时存储它们。

答案 2 :(得分:1)

尝试使用glob。类似的东西:

import glob
import os
path = '/host_server/master/images/set01a/env_basecolor_default_v001'
pattern = 'basecolor_default.*.jpg'
filenames = glob.glob(os.path.join(path, pattern))
# read filenames[0]