我有一個文件名(位置)的列表,我想要做的是我想從列表位置中刪除每個元素。從列表中刪除一些滿足條件的元素
條件:如果文件名以排除列表中的任何字符串開頭,則不要打印文件名。
locations = ['/data/mybackup/data/fil1',
'/data/mybackup/data/fil2',
'/data/mybackup/data/fil3',
'/data/mybackup/song/fil1',
'/data/mybackup/song/fil2',
'/data/mybackup/song/fil3',
'/data/archive/song/fil1',
'/data/archive/song/fil2',
'/data/archive/song/fil3',
'/data/archive/data/fil1',
'/local/archive/data/fil2',
'/local/archive/data/fil3',
'/ebboks/wordpress/fil1',
'/ebooks/wordpress/fil2',
'/ebooks/wordpress/fil3']
excludes = [ '/data/archive/', '/data' , '/ebooks/' ]
for location in locations:
for exclude in excludes:
if not location.startswith(exclude):
print(location)
break
結果:
/data/mybackup/data/fil1
/data/mybackup/data/fil2
/data/mybackup/data/fil3
/data/mybackup/song/fil1
/data/mybackup/song/fil2
/data/mybackup/song/fil3
/local/archive/data/fil2
/local/archive/data/fil3
/ebboks/wordpress/fil1
/ebooks/wordpress/fil2
/ebooks/wordpress/fil3
我的結果還是有文件名以 '/數據'
什麼是錯我的代碼?
'str.startswith'需要一個元組...如果你使'excludes'一個元組,而不是一個列表,你可以做'如果不是location.startswith(不包括)'一氣呵成,而不必擔心訂購/或重疊的子循環 –
我想,這真的只是一個邏輯上的錯誤,而不是一個蟒蛇問題。 'excludes'內的內部循環將始終僅針對'excludes [0]'和'break'進行測試。 –