如何解决使用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.jpg
和img_1.mp4
,如果三个都不可用,请移至下一个文件,然后像img_2.png
img_2.jpg
和img_2.mp4
一样重复,直到有可用文件为止
问题:
这是我认为可行的方法,但无效:
# 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 举报,一经查实,本站将立刻删除。