首页 > 解决方案 > python 在使用 os.listdir 时会跳过目录中的一些文件名并使用扩展名进行过滤

问题描述

我有一个包含 .txt 文件的目录。我需要提取该目录中的所有文件名以将其用于其他操作

我的问题是 os.lisdir 函数列出了目录中的所有文件,但是在我过滤了这些带有 .txt 扩展名的文件后,它会跳过 4 个文件。这就是我正在做的

dir_listing = os.listdir(path)

all_files = []
for item in dir_listing:
    if ".txt" in item:
        all_files.append(item)
return all_files

我在这 4 个跳过的文件中注意到的共同点是所有 4 个文件的名称都包含 _ mark.for ex:customer_details.txt

在过滤出这 4 个文件跳过的原因后,我无法弄清楚。任何帮助将不胜感激。

标签: pythonpython-3.x

解决方案


你有append两次。顺便说一句,如果您只是想检查下标,请使用endswithmethod 而不是in.

import os
path = './'
dir_listing = os.listdir(path)
all_files = []
for item in dir_listing:
    if item.endswith(".txt"):
        all_files.append(item)


print(all_files)

更新 我的文件及其结构:

landpacks-MacBook-Pro:xk  tree
.
├── a.txt
├── b.txt
├── c.txtaa
├── d.py
├── e.txt
└── xk.py

0 directories, 6 files
landpacks-MacBook-Pro:xk  python xk.py 
['b.txt', 'a.txt', 'e.txt']

推荐阅读