我有以下python代码来删除某个目录中的文件的所有副本,只保留其中的一个。函数内引用python变量
它工作正常,如果我注释掉delete()
函数中的前四行,但如果我不这样做,它会给我一个错误,即在分配之前引用局部变量list1。此外,我尝试使用称为全球的东西,但它没有帮助我太多,因为它给出了错误,说它是NoneType
。 请帮助我,我只是一个Python初学者。
list1 = []
list2 = []
def stripe(lis):
for i in range(len(lis)):
lis[0] = lis[0].strip()
def scan(pat):
pat = os.path.abspath(pat)
files = os.listdir(pat)
for file in files:
filepath = os.path.join(pat,file)
if os.path.isfile(filepath):
list1.append(file)
list2.append('{0}'.format(filepath))
elif os.path.isdir(filepath):
scan(filepath)
def delete():
list1_1 = stripe(list1)
list2_1 = stripe(list2)
list1 = list1_1
list2 = list2_1
length = len(list1)
#length = length - 1
i = 0
while i < length:
item = list1[0]
a = list1[0]
b = list2[0]
del list1[0]
del list2[0]
if item in list1:
try:
os.remove(list2[list1.index(item)])
#del list1[list1.index(item)]
#del list2[list1.index(item)]
except:
print('sorry',list1[0],'could not be deleted',sep = ' ')
print('wow')
i += 1
#list1.append(a)
#list2.append(b)
您是否尝试过创建[最小完全可验证的示例](https://stackoverflow.com/help/mcve)? –
您可以考虑删除功能的前5行。因为错误仅在那里出现 –
@ChiefVOLDERMORT那么理想情况下,您将提供一个展现相同行为的五行样本。通常,当您将程序与问题的实质相结合时,您会发现错误。这是我们的工艺的一部分。 –