【问题标题】:Python - How to find all same types of files in a folder and make a list out of it?Python - 如何在文件夹中找到所有相同类型的文件并从中列出?
【发布时间】:2020-04-14 07:41:29
【问题描述】:

我已尝试使用此代码查找文件夹中的所有“jpg”文件并从中列出。但结果显示如下。

['0', '0', '0', '1', '0', '8', '.', 'j', 'p', 'g']
['0', '0', '0', '1', '0', '8', '.', 'j', 'p', 'g', '0', '0', '0', '1', '1', '4', '.', 'j', 'p', 'g']

它返回文件名的所有字符而不是整个文件名。 你怎么解决这个问题?提前致谢。

import os 

def find_names(outpath):
    root_path_list= [file for file in os.listdir(outpath)]
    jpg_file_list = []
    for idx, file in enumerate(root_path_list) :
        if file.endswith('.jpg'):
            jpg_file_list += file             
            print(jpg_file_list)

【问题讨论】:

  • jpg_file_list += file 确实扩展了列表,因此它添加了“文件”的所有元素(所有字母),使用 jpg_file_list.append(file)
  • 顺便说一句,你的列表理解 [file for file in os.listdir(outpath)] 什么都不做 - 你可以分配 root_path_list = os.listdir(outpath)

标签: python list filenames


【解决方案1】:

我更喜欢使用glob 库:

一条线就能解决你的问题:

import glob, os
glob.glob(os.path.join(outpath,"*.jpg"))

对于您的代码,如果要将元素附加到列表中,则必须+= 列表。

jpg_file_list += [file] 

或使用附加

jpg_file_list.append(file)

【讨论】:

    【解决方案2】:

    您可以使用列表推导:

    import os 
    
    def find_names(outpath):
        return [file for file in os.listdir(outpath) if file.lower().endswith(".jpg")]
    

    【讨论】:

      【解决方案3】:
      import os
      import glob
      
      files = [os.path.basename(i) for i in glob.glob('*.jpg')]
      

      注意扩展名是区分大小写的,如果您有带有 JPG 扩展名的文件,您需要做一些进一步的工作。

      【讨论】:

        【解决方案4】:

        将条目附加到列表中

        jpg_file_list.append(file)
        

        【讨论】:

          【解决方案5】:

          其他人评论了创建文件扩展名匹配列表的方法。他们没有直接澄清我认为您的问题答案的另一部分是什么,为什么各个字母最终出现在您的 jpg_file_list 而不是文件名字符串中。

          这里的答案涉及但未明确说明的一件事是字符串(例如文件名)是一种集合类型。

          这很有用,因此您可以遍历字符串中的字符,对其进行索引并对其进行切片。但在某些情况下,当您将其视为一个项目并且代码将其视为一个列表时,这可能会令人讨厌。

          在您的代码中,文件名字符串被视为列表而不是单个项目,并且字符被单独添加到列表中,而不是文件名作为单个条目。

          正如其他人已经说过的,要更改代码以处理字符串是集合这一事实,您需要进行更改:

          jpg_file_list += file 
          

          jpg_file_list += [file]
          

          jpg_file_list.append(file)
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2021-12-28
            • 2011-10-27
            • 2013-05-18
            • 2020-07-02
            • 1970-01-01
            相关资源
            最近更新 更多