微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用glob遍历dir中的文件以选择正确的扩展名? 这是我认为可行的方法,但无效:

如何解决使用glob遍历dir中的文件以选择正确的扩展名? 这是我认为可行的方法,但无效:

我正在尝试遍历一个目录,然后选择第一个可用文件

这些文件如下所示:

img_1.png img_2.png img_3.mp4 img_4.png img_5.jpg img_6.mp4

如您所见,它们的名称具有内聚力,但扩展名不同。我希望脚本在移至下一个IE之前对每个数字的每个扩展名进行迭代:

我认为最好的解决方法是遍历每个文件和扩展,如下所示:img_1.png img_1.jpgimg_1.mp4,如果三个都不可用,请移至下一个文件,然后像img_2.png img_2.jpgimg_2.mp4一样重复,直到有可用文件为止

问题:

最好遍历文件并使用glob扩展带有扩展名的文件路径吗?有更好的方法吗?

这是我认为可行的方法,但无效:

    #   Gets number of files in dir
    list = os.listdir(folder_path)
    number_files = len(list)

    #   Chooses file from dir
    e = 0
    for i in range(number_files):
        try:
            chosen_file = folder_path + "img_" + str(e)
            for ext in ('*.jpg','*.png','*.mp4'):
                full_path = chosen_file.extend(glob(join(chosen_file,ext)))
                print (full_path)
            #random_file = random.choice(os.listdir(folder_path))    # Chooses random file
        except:
            e += 1
            print ('Hit except')

解决方法

您是否不想选择文件夹中其他名称不同的其他文件,还是感兴趣的文件夹中的所有文件?他们具有这三个扩展名还是所有重要的事情吗?

如果您只对具有这三个扩展名的文件感兴趣,那么此代码将起作用

import os
import glob

folder_path = 'test\\'

e = 0
for r,d,f in os.walk(folder_path):
    for file in f:
        extensions = ['.jpg','.png','.mp4']
        for ext in extensions:
            if file.endswith(ext):
                full_path = os.path.join(folder_path,file)
                print (full_path)
            else:
                e += 1
                print ('Hit except')
,

给出:

$ ls /tmp
img_1.png img_1.jpg img_2.png img_4.png img_5.jpg img_3.mp4 img_6.mp4

您可以使用pathlib和更具针对性的glob:

from pathlib import Path 

p=Path('/tmp')

for fn in (x for x in p.glob('img_[0-9].*') 
                if x.suffix in ('.png','.jpg','.mp4')):
    print(fn)

打印:

/tmp/img_1.png
/tmp/img_1.jpg
/tmp/img_2.png
/tmp/img_4.png
/tmp/img_5.jpg
/tmp/img_3.mp4
/tmp/img_6.mp4
,

答案:

决定不使用glob,而是这样做:

uploadTask.future

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。