筛选掉0kb档案并从list中拔除使用问题

楼主: piligo (霹雳狗)   2021-09-25 04:46:35
透过下方这段来筛选掉0kb的csv档案
csvfilearr=glob.glob(r'*.csv')
dellist=[]
i=1
for item in csvfilearr:
size = os.path.getsize(item)
if size == 0:
dellist+=str(i-1)
i+=1
else:
i+=1
for index in sorted(dellist, reverse=True):
del csvfilearr[int(index)]
这样写10个档案内都没问题,list的 [0,1.....9]
但超过10个档案就出包了,两位数的都会被拆成个位数 [0,1....9,1,0,1,1,1,2]
这要怎么改写才能变成[0,1....9,10,11,12]
有尝试dellist+=str(i-1)改成dellist+=int(i-1),
但是会报错TypeError: 'int' object is not iterable
谢谢
作者: chickengod (鸡大侠)   2021-09-25 05:24:00
https://i.imgur.com/8Tj4D95.jpg用内建的 enumerate() 可以同时得到 index我猜 += 左右 type 要一样 所以str 被强制转型成list这里要放新元素进list 可以用 list.append()https://stackoverflow.com/questions/725782
作者: s0914714 (YA)   2021-09-25 05:44:00
dellist+=[str(i-1)]
作者: lycantrope (阿宽)   2021-09-25 09:02:00
csvfilearr = [f for f in glob.glob(r"*.csv")if os.path.getsize > 0]if os.path.getsize(f) > 0]
楼主: piligo (霹雳狗)   2021-09-26 23:21:00
感谢chickengod s0914714 lycantrope 三个方法都成功程式也越来越短 短到剩一行 看的真清爽

Links booklink

Contact Us: admin [ a t ] ucptt.com