尝试对长列表排序时发生TypeError



我有一个可以排序的项目列表,它们的形式是:

example_files = ['LJ028-0299.txt', 'LJ029-0000.txt', 'LJ001-3214.txt']

排序后返回

['LJ001-3214.txt', 'LJ028-0299.txt', 'LJ029-0000.txt']

然而,我有一个大约13000个文件的文件夹,需要将它们排序在一个列表中。我把它们附加到一个列表中:

for root, subdirs, files in os.walk(rootdir):
files.append(files)

但是当执行sorted(files)时,我得到一个TypeError:

TypeError: '<' not supported between instances of 'list' and 'str'

我怀疑这是因为files的输出在末尾包含了以下内容:

'LJ010-0151.txt', 'LJ027-0128.txt', [...]]

我不一定需要使用列表,我只需要能够迭代文件,并将每个文件中的信息用作类的输入。我认为这种方法是最简单的方法,因为无论出于什么原因,在它们上循环通常不会对它们进行排序。

您可能正在跟踪您的变量。

用于os.walk(rootdir(中的根目录、子目录、文件文件.append(files(

你试过吗:

file_list = []
for root, subdirs, files in os.walk(rootdir):
file_list.append(files)
# access your list here

或者更短的:file_list = [files for root, subdirs, files in os.walk(rootdir)]

您的列表中可能有不可比较数据类型。不能也不能对彼此不同的数据类型使用"排序"。

在您的情况下,您在列表中有一个列表,例如下面的:

data=[a','b','d',['1','2']]
打印(排序(数据((

以上排序的数据肯定会引发"TypeError:'list'和'str'的实例之间不支持'<'">

使用"isistance(data,list("对文件进行一些检查,如果返回True,则扩展而不是追加。

以下代码示例:rootdir.txt包含:
'a'
['1','2']

list_text = []    
with open ('rootdir.txt', 'r') as files:
for text in file:
if isinstance(text, list):
list_text.extend(text)
else
list_text.append(text)

我刚刚注意到你用"文件"来附加"文件"。声明另一个空列表,然后将文件追加到那里实际上可能会解决您的问题。

data_in_files = []
for root, subdirs, files in os.walk(rootdir):
data_in_files.append(files)

相关内容

最新更新