python没有删除目录lis的列表项

2024-10-01 15:31:33 发布

您现在位置:Python中文网/ 问答频道 /正文

我想返回一个基于目录列表的列表进行排序。我的问题是,当我对列表中的每个文件执行循环,并尝试基于用户输入的扩展名.endswith()删除时,它似乎无法正确更新列表(但它确实打印出“删除文件…”)。我做错什么了吗?我应该更新或返回列表(files)吗?&燃气轮机

同样,如果我将dirlist变量files设置为files=file_list.sort(),它将返回none,那么我必须设置files=sorted(file_list)。。。为什么?你知道吗

import os

class Sort:

dirchoice = os.getcwd()
file_list = list(os.listdir(dirchoice))
files=sorted(file_list)

def file_extension(self):
    if input("Would you like to specify a particular file extension [Y/N]").lower() == ('y' or 'yes'):
        ext=input("filetype>")
        ext = str(ext)
        for file in self.files:
            print(file)
            if not file.endswith(ext):
                self.files.remove(file)
                print("removing " +file+ " from list...")
        return self.files
        print("File Contents:  ")        
        pprint.pprint(self.files)     
        return self.file_extension()

Tags: 文件self列表inputifosextensionfiles
1条回答
网友
1楼 · 发布于 2024-10-01 15:31:33

最后一条评论的简短回答:

这是因为for循环在循环的每次迭代开始时都会按顺序从files列表中检索项。它使用一个隐藏的整数索引来实现这一点。因此,如果在迭代过程中删除元素,索引就会“不同步”。你知道吗

这篇文章包含了更多的细节:How to remove list elements in a for loop in Python?

相关问题 更多 >

    热门问题