我有以下python代码来删除某个目录中文件的所有副本,只保留其中一个。
如果我在delete()
函数中注释掉前四行,它可以正常工作但是如果我不注意它会给我一个错误,即在赋值之前引用局部变量list1。此外,我尝试使用一种名为global的东西,但它并没有帮助我,因为它给出的错误是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)
答案 0 :(得分:0)
global
看起来对你来说是正确的选择,但如果你说它给出了错误,请先使用首先想到的方式。 list1和list2可以是delete()
函数的参数。
这样的事情:
def delete(list1, list2):
...
def foo():
list1 = []
list2 = []
...
delete(list1, list2)
另外,正如我所说,global
始终是一种选择。这是一个简单的例子:
list = []
def foo():
global list
list.append(1234)
def foo2():
global list
print(list)
foo()
foo2()
输出:
[1234]