我想删除文件夹名称中包含“完成”的文件夹。这是我的代码
import os
mainPath = os.getcwd() + "/MyFolder/"
folderList = os.listdir(mainPath)
tempList = folderList # so that I can iterate while using remove()
print len(tempList)
print len(folderList)
for folder in tempList:
if 'Done' in folder:
folderList.remove(folder)
print len(tempList) # expected: Not to change
print len(folderList)
我得到的输出是:
26个
26个
22个
22
我不明白为什么要从 testList 中删除项目。它不应该只从 folderList 中删除吗?
答案 0 :(得分:3)
你让列表指向同一个东西。使用copy.deepcopy
基本上当你执行tempList = folderList
时,它会使两个列表指向同一个东西。如果您需要可以单独操作的同一列表的两个副本,则需要执行以下操作:
import copy
tempList = copy.deepcopy(folderList)
如果您知道列表中的所有项目都是不可变项,则可以tempList = folderList[:]
,但deepcopy
更安全。