我有以下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那麼理想情況下,您將提供一個展現相同行爲的五行樣本。通常,當您將程序與問題的實質相結合時,您會發現錯誤。這是我們的工藝的一部分。 –