İçindeki dosyaları kontrol etmem gereken bir yol listesi verdim. Tabii ki, bir root ve bir alt dizin verildiyse, alt dizini işlemeye gerek yoktur. Örneğin, bir yolun diğerinin bir alt dizini olmadığını (çapraz platform) nasıl anlayabilirim (çapraz platform). Tercihen bunun çapraz platform olmasını isterim ve döngüsel olmadıkça symlinks hakkında endişelenmem (daha da kötüsü, verileri iki kez işlediğimdir).Bir yolun başka bir alt dizini olup olmadığı nasıl belirlenir?
GÜNCELLEME: Burada ben kullanarak sona erdi kodu sayesinde ben zaten işledik dizinleri bir dizi koruyacağını ve ardından her yeni yol kontrolü herhangi olup olmadığını görmek üzere
def unique_path_roots(paths):
visited = set()
paths = list(set(paths))
for path in sorted(paths,key=cmp_to_key(locale.strcoll)):
path = normcase(normpath(realpath(path)))
head, tail = os.path.split(path)
while head and tail:
if head in visited:
break
head, tail = os.path.split(head)
else:
yield path
visited.add(path)
Bu bir liste tarayarak yerine üyelik testleri set çünkü benim öneri daha hızlı olacaktır. Bunu sevdim. – kindall
@ F.J bir infitie döngü gibi gözüküyor, kafa c: \ 'ye çok dibinde indiriyor ve asla Hiçbiri olarak ayarlanmadı. – esac
@esac - Bunun için üzgünüm, temel durumda herşeyi başa değil kuyruğa sokacağını düşünmüştüm. Sorunu çözmem gereken düzenlemeye bakın. –