我有一个列表,用于处理目录上的一系列任务。有时,该过程会卡在某个目录中。目前我正在删除该元素并通过列表重新运行该过程。然而,这需要一段时间。
这是我现在正在做的事情:
directories = next(os.walk('/home'))[1]
directories.remove('brokendirectory')
process_directory(directory)
Run Code Online (Sandbox Code Playgroud)
我想要做的是删除每个目录,包括损坏的目录,并且只在该损坏目录之后的目录列表上工作。像这样的东西:
def clear_list(directories, element):
new_list = []
for directory in directories:
if directory == element:
break
else:
new_list.append(directory)
return(new_list)
directories = next(os.walk('/home'))[1]
new_directories = clear_list(directories,'brokendirectory')
process_directory(new_directories)
Run Code Online (Sandbox Code Playgroud)
显然,我的函数不能按原样工作。
如何删除列表中的所有元素,包括指定的元素并返回一个新列表进行处理?
您可以使用列表的 index 方法找到所需元素的索引,然后使用切片删除所有元素,包括它。
directories = directories[directories.index('brokendirectory')+1:]
Run Code Online (Sandbox Code Playgroud)
您可以使用该功能dropwhile:
from itertools import dropwhile
l = 'ABCDEFG'
element = 'D'
list(dropwhile(lambda x: x != element, l))
# ['D', 'E', 'F', 'G']
Run Code Online (Sandbox Code Playgroud)
找到损坏目录的索引:
idx = directories.index('brokendirectory')
Run Code Online (Sandbox Code Playgroud)
使用该索引对新列表进行切片:
new_directories = directories[idx+1:]
Run Code Online (Sandbox Code Playgroud)
然后处理:
process_directory(new_directories)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4460 次 |
| 最近记录: |