python - 如何通过避免在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
推荐阅读
- hadoop - 如何在 Group by 之后展平并从 pig 获得如下所示的预期输出
- excel - 带有条件数组和多个 X 变量的 Excel LINEST
- c++ - 在使用带参数的构造函数创建类时收到错误“预期标识符”
- performance - 如何消除 Hive 中的“rank() over (...order by timestamp)”模式?
- python - .txt 文件中的密钥生成器
- c++ - Clion 2020.3 中的 Qt
- kubernetes-helm - helm 模板输出显示未解析的值
- javascript - 当异步事件发生时,在 Promise.all() 中更改 Promise 的 Promise 状态
- c++ - 如何从串口接收数据?
- powershell - PowerShell - 只读我在 dir 中指定的通配符文件名并将结果输出到 txt 文件