提取函数以生成文件路径:def _file_paths(directory):

for root, dirs, filenames in os.walk(directory):

for filename in filenames:

file_path = os.path.join(root, filename)

if os.path.isfile(file_path):

yield file_path

统一异常处理:

^{pr2}$

提取用于处理文件类型的函数:def _handle_cfn(file_object):

file_contents = file_object.read()

if "AWSTemplateFormatVersion" in file_contents:

data = json.dumps(file_contents)

print(data)

def _handle_tf(file_object):

obj = hcl.load(file_oject)

data = json.dumps(obj)

print(data)

为文件扩展名不匹配时创建空处理程序:def _null_handler(file_object):

pass

将文件扩展名映射到处理程序:_extension_handlers = {'.json': _handle_cfn,

'.template': _handle_cfn,

'.yaml': _handle_cfn,

'.yml': _handle_cfn,

'.tf': _handle_tf}

组合起来:import os

import json

import click

import hcl

def file_handler(dir):

for file_path in _file_paths(dir):

base, extension = os.path.splitext(file_path)

handler = _extension_handlers.get(extension, _null_handler)

with open(file_path) as file_object:

with _translate_error(ValueError, SystemExit):

handler(file_object)

您可以进一步提取一个用于处理每个文件的函数:def _handle_file(file_path):

base, extension = os.path.splitext(file_path)

handler = _extension_handlers.get(extension, _null_handler)

with open(file_path) as file_object:

with _translate_error(ValueError, SystemExit):

handler(file_object)

那么您的主要功能是:def file_handler(dir):

for file_path in _file_paths(dir):

_handle_file(file_path)

python函数降低编程复杂度_Python重构此函数,将其认知复杂度从19降低到允许的15...相关推荐

  1. python采用函数式编程模式吗_Python函数与函数式编程

    1 函数 函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段. 函数能提高应用的模块性,和代码的重复利用率.你已经知道Python提供了许多内建函数,比如print().但你也可以自己创 ...

  2. python中字符串格式化的形式_Python中format函数字符串格式化入门

    格式化在程序开发中非常常见,大家肯定不陌生,Python中也存在多重格式化方式,format函数就是其中一种. 函数原型format(value[, format_spec]) 参数意义 value: ...

  3. python中的方法什么意思_python中的函数和方法的区别是什么

    python中的函数和方法的区别: 1.函数要手动传self,方法不用传self. 2.如果是一个函数,要用类名去调用,如果是一个方法,要用对象去调用. 举例说明:class Foo(object): ...

  4. python中fact()是什么意思_python中fact函数是什么及如何使用?

    虽然已经和大家讲述过很多函数了,但是因为在项目搭建里,函数是起着十分重要的作用,所以需要用到的函数有很多,而绝大部分函数,大家经常使用过程中,轻松运用使用,但是还有少部分函数,大家却未见过,也不知道怎 ...

  5. python中def什么时候用_Python中定义函数def的使用方法

    Python中定义函数def的使用方法 发布时间:2020-12-15 09:26:24 来源:亿速云 阅读:71 作者:小新 这篇文章给大家分享的是有关Python中定义函数def的使用方法的内容. ...

  6. python量化交易编程自学网_Python量化交易编程自学 不会编程能做量化交易吗?...

    Python量化交易编程自学 不会编程能做量化交易吗? 点击:44  日期:2020-07-10 17:41:00.0 我经常会遇到朋友发来这样的问题,自己忙,不会编程,也没时间学,如何才能实现「量化 ...

  7. python中map用法详解_Python:map函数用法详解

    一个简单的例子:将一个list中所有元素平方,常规的做法如下图所示,虽然实现了这个功能,但并没有给人一目了然的感觉.若换成map来实现,则会好很多. 常规方法 map函数 1.map函数介绍及其简单使 ...

  8. linux编程取消wait函数,Linux编程基础之进程等待(wait()函数).pdf

    Linux编程基础之进程等待(wait()函数) 编程过程中,有时需要让一个进程等待另一个进程 ,最常见的是父进程等待自己的子进程 ,或者父进程回收自己 的子进程资源包括僵尸进程.这里简单介绍一下系统 ...

  9. python的面向对象编程学生成绩_python的类_面向对象编程

    摘自谬雪峰https://www.liaoxuefeng.com/wiki/1016959663602400/1017496031185408 面向对象编程(定义对象)和面向过程(定义函数)的区别,各 ...

最新文章

  1. Web socket广播
  2. [JavaWeb-MySQL]多表查询概述
  3. python求矩阵的秩_Python 实现线性代数计算器
  4. PAT (Basic Level) Practise:1013. 数素数
  5. 硅谷VC想对CIO说这些
  6. [转载] python程序所需的图片通过base64编码成字符串放在代码中
  7. :visible.sync 的作用
  8. elas源码赏析(二)sobel算子3*3行列分解快速卷积
  9. 【老生谈算法】matlab实现传染病模型源码——传染病模型
  10. 逐点比较法直线插补MATLAB
  11. 伪彩色增强(基于MATLAB)
  12. 关于几种常用的脱壳方法总结
  13. python爬虫的知识
  14. python入门知识以及print的用法
  15. Hadoop Dynamometer工具详细教程,填坑日记
  16. Java获取package下所有的class对象(普通文件包和Jar文件包)
  17. 使用jasypt 进行数据库配置加密
  18. java游戏宠物进化,[娱乐][SCT]imiPet —— 动态动作模型的宠物开源,由社区维护[1.9-1.16]...
  19. 【CSAPP:3e 深入理解计算机系统】课堂笔记 Computer Systems from a Programmer’s Perspective
  20. ONLYOFFICE如何做到在线免费转换PDF

热门文章

  1. 介绍某现金贷平台的决策规则
  2. 【代码备份】ORACLE数据库表同步DBLINK
  3. NPOI导出Excel2007-xlsx
  4. centos PIL 安装
  5. ASP.NET常用代码汇总
  6. ShowSlow+Yslow环境搭建
  7. 对一个正整数n,求出n!中末尾0的个数。
  8. GridView页脚汇总(统计)行的方法(.net 2.0)
  9. 部署 dashboard 插件
  10. 洛谷P3379 【模板】最近公共祖先(LCA)