我有一段代码,这是应该创建和排序的列表文件的大小。这就是它:
class DataScript(object):
def __init__(self, index, name, size):
self.index = index
self.name = name
self.size = size
def __cmp__(self, other):
if hasattr(other, 'getKey'):
return self.getKey().__cmp__(other.getKey())
def getKey(self):
return self.size
def __iter__(self):
return self
def __next__(self):
self.index += 1
try:
return data[self.index - 1]
except IndexError:
self.idx = 0
raise StopIteration # Done iterating.
resultList = []
data = [d for d in os.listdir(dirpath) if '_DATA_TABLE' in d]
i=0
for file in data:
fileinfo = os.stat(join(dirpath, file))
file_obj = DataScript(i, file, float(fileinfo.st_size))
if isinstance(file_obj, DataScript):
resultList.extend(file_obj)
i=i+1
items = resultList
for i in range(len(items)):
for j in range(len(items) - 1 - i):
item1 = items[j]
item2 = items[j+1]
if isinstance(item1, DataScript) and isinstance(item2, DataScript):
if item1.__cmp__(item2)>0:
items[j] = item2
items[j+1] = item1
resultList = items一切都正常,但并不完全像预期的那样。最后的结果列表不是DataScript对象的排序列表,而是字符串。为什么?因此,我在最后的排序部分不起作用。
发布于 2018-08-15 14:13:15
你可能是想用append代替extend
for file in data:
fileinfo = os.stat(join(dirpath, file))
file_obj = DataScript(i, file, float(fileinfo.st_size))
if isinstance(file_obj, DataScript):
resultList.append(file_obj) # append DataScript obj to your list
i=i+1https://stackoverflow.com/questions/51853709
复制相似问题