Python - 如何在一个文件夹中找到所有相同类型的文件并从中列出一个列表?
Python - How to find all same types of files in a folder and make a list out of it?
我试过此代码来查找文件夹中的所有 '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']
它returns列出文件名的所有字符,而不是整个文件名。
你怎么解决这个问题?提前致谢。
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)
我更喜欢使用 glob
库:
一行可以解决您的问题:
import glob, os
glob.glob(os.path.join(outpath,"*.jpg"))
对于您的代码,如果您想将元素追加到列表中,您必须 +=
一个列表。
jpg_file_list += [file]
或使用追加
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
import glob
files = [os.path.basename(i) for i in glob.glob('*.jpg')]
请注意扩展名区分大小写,如果您的文件扩展名为 JPG,则需要做一些进一步的工作。
其他人评论了创建文件扩展名匹配列表的方法。他们没有直接澄清我认为是你问题答案的另一部分,为什么单个字母最终出现在你的 jpg_file_list 而不是文件名字符串中。
此处的答案涉及但未明确说明的一件事是字符串(例如文件名)是一种集合。
这很有用,您可以遍历字符串中的字符、对其进行索引并从中提取切片。虽然在某些情况下,当您将其视为一个项目并且代码将其视为一个列表时,这可能会很麻烦。
在您的代码中,文件名字符串被视为列表而不是单个项目,并且字符被单独添加到列表中而不是文件名作为单个条目。
正如其他人已经说过的,要更改您的代码以处理字符串是集合这一事实,您需要更改:
jpg_file_list += file
到
jpg_file_list += [file]
或
jpg_file_list.append(file)
我试过此代码来查找文件夹中的所有 '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']
它returns列出文件名的所有字符,而不是整个文件名。 你怎么解决这个问题?提前致谢。
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)
我更喜欢使用 glob
库:
一行可以解决您的问题:
import glob, os
glob.glob(os.path.join(outpath,"*.jpg"))
对于您的代码,如果您想将元素追加到列表中,您必须 +=
一个列表。
jpg_file_list += [file]
或使用追加
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
import glob
files = [os.path.basename(i) for i in glob.glob('*.jpg')]
请注意扩展名区分大小写,如果您的文件扩展名为 JPG,则需要做一些进一步的工作。
其他人评论了创建文件扩展名匹配列表的方法。他们没有直接澄清我认为是你问题答案的另一部分,为什么单个字母最终出现在你的 jpg_file_list 而不是文件名字符串中。
此处的答案涉及但未明确说明的一件事是字符串(例如文件名)是一种集合。
这很有用,您可以遍历字符串中的字符、对其进行索引并从中提取切片。虽然在某些情况下,当您将其视为一个项目并且代码将其视为一个列表时,这可能会很麻烦。
在您的代码中,文件名字符串被视为列表而不是单个项目,并且字符被单独添加到列表中而不是文件名作为单个条目。
正如其他人已经说过的,要更改您的代码以处理字符串是集合这一事实,您需要更改:
jpg_file_list += file
到
jpg_file_list += [file]
或
jpg_file_list.append(file)