从列表中删除不属于特定文件路径的文件 - Python

Removing files from list which aren't of a certain file path - Python

作为我项目的一部分,我的工具要求用户输入一个文件夹,文件夹中包含的所有文件都存储在一个列表中,供以后使用。 我需要使列表只包含“.jpg”或“.tiff”文件格式的文件,因此删除所有不属于该文件格式的文件。我似乎无法弄清楚如何做到这一点。如何从列表中删除任何其他文件格式?下面我将 post 举一个我已经尝试过的例子。

files = os.listdir(file_dir)

for file in files:
    if not files.endswith(".jpg", ".tiff"):
        files = files.remove(file)

使用

files = [f for f in os.listdir(file_dir) if (f.endswith(".jpg") or f.endswith(".tiff"))]

在以 'if' 开头的行中,您正在检查文件,而不是文件。 'endswith' 需要一个元组。 这应该有效:

 files = os.listdir(file_dir)

 for file in files:
     if not file.endswith((".jpg", ".tiff")):
        files.remove(file)

你可以使用glob模块,它会列出所有匹配的路径名。

import glob

files = []

for f in glob.glob("*.jpg"):
    files.append(f)
for f in glob.glob("*.tiff"):
    files.append(f)