如何通过避免在python中嵌套来简化下面的代码?



我正在寻找下面解决方案的简化方法。

这就是我打算在这里做的:

  • 遍历文件夹中的文件

  • 查找文件匹配模式

  • 分裂文件名

  • 查找对应的新文件

  • 如果没有找到,则删除原始文件


import os
for root, dirs, files in os.walk('folder'):
for old_file in files:
if fnmatch.fnmatch(old_file, 'pattern'):
spl = old_file.rsplit('_')
new_file = os.path.isfile(f'folder/xxx_{int(spl[6])*2}_{int(spl[7])*2}_yyy.txt')
if not new_file:
# delete old_file

您可以使用带有相反条件的continue语句来继续删除旧文件,而不需要嵌套条件:

import os
for root, dirs, files in os.walk('folder'):
for old_file in files:
if not fnmatch.fnmatch(old_file, 'pattern'): continue
spl = old_file.rsplit('_')
new_file = os.path.isfile(f'folder/xxx_{int(spl[6])*2}_{int(spl[7])*2}_yyy.txt')
if new_file: continue
# delete old_file

最新更新