나는 다음의 파이썬 코드를 사용하여 특정 디렉토리에서 파일 중 하나만 유지하는 모든 파일 사본을 삭제합니다.함수 내에서 파이썬 변수 참조하기
delete()
함수의 처음 네 줄을 주석으로 처리해도 문제가 없지만 할당되지 않은 경우 로컬 변수 list1이 할당 전에 참조되는 오류가 발생합니다. 또한 글로벌이라고 불리는 것을 사용해 보았습니다 만, 그것이 NoneType
이라고 말하는 에러를주었습니다. 파이썬에서 중급 초보자입니다.
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 그러면 이상적으로 동일한 동작을 나타내는 다섯 개의 선 샘플을 제공하게됩니다. 일반적으로 프로그램을 문제의 본질로 되돌릴 때 오류를 발견하게됩니다. 그건 우리 기술의 일부입니다. –