如何使用特定模式制作for循环读取文件

时间:2019-05-22 23:50:04

标签: python operating-system

我从视频中提取了很多图像,现在我有了一个具有以下名称的文件夹:

  1. frame1.jpg

  2. frame2.jpg

  3. ....
  4. frame10.jpg

  5. frame11.jpg

  6. frame12.jpg
  7. ....
  8. frame101.jpg
  9. frame102.jpg
  10. ....

我使用以下代码尝试转换每个图像:

 `for files in os.listdir("./images1"):
          do something to tranform`

我打印了文件名,但它们没有按顺序列出。他们像这样1,10,100,1000,1000然后11,12,13,14出来。我想要1,2,3,4,5...的输出,因为它是视频,按时间顺序排列很重要。

2 个答案:

答案 0 :(得分:2)

检查一下:

my_list = ["frame1.jpg", "frame10.jpg", "frame101.jpg", "frame102.jpg", "frame11.jpg", "frame12.jpg", "frame2.jpg"]
my_list.sort(key=lambda name: int(name[5:-4]))
print(my_list)

说明:

key=lambda name: int(name[5:-4])

是用于排序的函数,它提取名称字符串中与框架编号相对应的部分,并将其转换为int

现在,您只需要插入my_list = os.listdir("./images1"),对其进行排序并对其进行迭代即可。

答案 1 :(得分:0)

如果您确切地知道路径,那么也可以尝试以下方法:

folder_path = "<insert folder location>" 

for i in range(1, no_of_frames):
     file_name = f"{folder_path}/frame{i}.jpg"
     do what you want here