gpt4 book ai didi

python - 如何获取文件夹中文件的过滤列表

转载 作者:太空宇宙 更新时间:2023-11-03 14:23:29 26 4
gpt4 key购买 nike

我正在尝试在文件夹中获取过滤(或图案化,但我几乎没有触及图案内容)文件列表。

我最初的方法是使用 glob:

list_files2 = os.listdir(accordingto)
movable = set()
n = 0
for f in list_files2:
name, ext = os.path.splitext(f)
name = name.rsplit("_", 1)[0]
movable.add(name)
for m in movable:
family = glob("{}{}*".format(dir, m))
for f in family:
# f is absolute path and needs to be relative
shutil.move(f, target+f) # <- problem is here
n += 1

它的工作原理几乎与我预期的一样,除了它返回一个绝对路径,而我想要一个相对路径(仅文件名)将其附加到目标文件夹。

为了更清楚地说明,我有一个文件夹,其中包含来自同一原始图像的“系列”中分组的各种图像。例如。

  • 家庭:71_157,23_850

  • 图片: 71_157,23_850_1.jpg、71_157,23_850_1.png、71_157,23_850_3.jpg 等

我知道我可以处理 glob 返回的每个项目,但这种方法似乎有点循环。

我的第二种方法是使用os.scandir:

x = [f.name for f in os.scandir('images') if f.name.startswith(family in movable)]

这当然根本不起作用,尽管它适用于特定的图像“系列”,例如对于51_332,-5_545家庭

x = [f.name for f in os.scandir('images') if f.name.startswith('51_332,-5_545')]

例如,我可以将结果连接到一个循环中。

所以,我的问题是:

  1. 有没有办法用 glob 返回相对路径?或者我被绝对路径困住了?
  2. 如何以“pythonic”方式使用 os.scandir 获取过滤后的文件列表?

最佳答案

我使用这个方便的小功能。

import os, fnmatch
def List(Folder, Name):
'''Function to get List of Files in a folder with a
given filetype or filename'''
try:
string = '*' + Name + '*'
FileList = fnmatch.filter(os.listdir(Folder), string)
return FileList
except Exception as e:
print('Error while listing %s files in %s : %s' % (string, Folder, str(e)))
return []

关于python - 如何获取文件夹中文件的过滤列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47788079/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com