Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python-如何在文件夹中找到所有相同类型的文件并从中列出一个列表?_Python_List_Filenames - Fatal编程技术网

Python-如何在文件夹中找到所有相同类型的文件并从中列出一个列表?

Python-如何在文件夹中找到所有相同类型的文件并从中列出一个列表?,python,list,filenames,Python,List,Filenames,我试着用这段代码在一个文件夹中找到所有的“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

我试着用这段代码在一个文件夹中找到所有的“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.append(file)

将条目附加到列表中

jpg_file_list.append(file)

我更喜欢使用
glob
库:

一条线可以解决您的问题:

import glob, os
glob.glob(os.path.join(outpath,"*.jpg"))
对于代码,若要将元素附加到列表中,则必须
+=
列表

jpg_file_list += [file] 
或者使用append

jpg_file_list.append(file)

我更喜欢使用
glob
库:

一条线可以解决您的问题:

import glob, os
glob.glob(os.path.join(outpath,"*.jpg"))
对于代码,若要将元素附加到列表中,则必须
+=
列表

jpg_file_list += [file] 
或者使用append

jpg_file_list.append(file)

您可以使用列表理解:

import os 

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

您可以使用列表理解:

import os 

def find_names(outpath):
    return [file for file in os.listdir(outpath) if file.lower().endswith(".jpg")]
注意扩展名是区分大小写的,如果您有带有JPG扩展名的文件,您将需要做一些进一步的工作


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

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

这里的答案涉及但没有明确说明的一点是字符串(如文件名)是一种集合类型

这是非常有用的,这样您就可以迭代字符串中的字符,索引到字符串中并对其进行切片。虽然在某些情况下,当您将其视为一个项目,并且代码将其视为一个列表时,它可能是一个麻烦

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

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

jpg_file_list += file 


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

这里的答案涉及但没有明确说明的一点是字符串(如文件名)是一种集合类型

这是非常有用的,这样您就可以迭代字符串中的字符,索引到字符串中并对其进行切片。虽然在某些情况下,当您将其视为一个项目,并且代码将其视为一个列表时,它可能是一个麻烦

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

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

jpg_file_list += file 


jpg\u file\u list+=file
确实扩展了列表,因此它添加了“file”(所有字母)的所有元素,使用
jpg\u file\u list.append(file)
作为旁白,您的列表理解
[file for file in os.listdir(outpath)]
不做任何事情-您可以只分配
root\u path\u list=os.listdir(outpath)
jpg\u file\u list+=file
确实扩展了列表,因此它添加了“file”(所有字母)的所有元素,使用
jpg\u file\u list.append(file)
作为旁白,您的列表理解
[file for file in os.listdir(outpath)]
不做任何事情-您可以只分配
根路径\u list=os.listdir(outpath)