篩選掉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