def __init__(self): # 加载配置文件 self.cfg_xls = loadcfgcm.load("cncrs_xls_to_xml.json", default_config) # 加载规则字典 chk_cfg = loadcfgcm.load("cncrs_xls_to_xml_chk.json", check_config) self.chk_rule_map = checkcm.load_check_map(chk_cfg) # 加载历史报送 self.last_report = loadcfgcm.load("cncrs_xls_to_xml_last.json", last_report)
def __init__(self, tpl_path, out_path): """ 初始化 :param tpl_path: 模版路径 :param out_path: 生成文件路径 """ # 加载配置文件 self.cfg_mk = loadcfgcm.load("codegen_maker_module.json", default_config) # 模版文件根路径 self.tpl_path = tpl_path # 输出文件根路径 self.out_path = out_path # 读取模版配置 self.cfg_tpl = loadcfgcm.load_cfg_file(self.tpl_path, "tpl_config.json") if self.cfg_tpl is None: logcm.print_info("Template Config Load Failed!", fg='red') sys.exit()
"host": "locaohost:8080", "user": "******", "token": "xxxxxxx", "jobs": { "xxx" : [ { "job_name": "xxxxxxx", "svn_url": "http://10.xx.x.xxx/svn/xxxxxxx", "task_no": "xxxxx" } ] } } """ # 加载配置文件 cfg = loadcfgcm.load("net_jenkins_job.json", default_config) # 链接到服务器 jenkins = JenkinsClient(cfg) dev_jobs = jenkins.get_jobs("dev_build") logcm.print_obj(dev_jobs, "dev_jobs") test_jobs = jenkins.get_jobs("build", "dev_build") logcm.print_obj(test_jobs, "test_jobs") # 启动JOB # for job in cfg['jobs']["wealthgateway-test"]: # jenkins.invoke(**job)
save_path = './temp/draw_box_result_thumb.jpg' imagecm.resize(img_path, 500, 500, save_path, keep_ratio=True) default_config = """ { "remark" : "图片按照横竖分类复制或移动", "action" : "copy|move", "src_path": "", "target_path_w": "", "target_path_h": "", "skeep_exist": true } """ # 加载配置文件 cfg = loadcfgcm.load("file_img_movecopy.json", default_config) # 检索图片列表 search_path = '' path_list = filecm.search_files(cfg["src_path"], '.jpg', r'^[^\.]+') logcm.print_obj(path_list, 'path_list') # 横版图片路径列表 w_list = [] h_list = [] for path in path_list: if imagecm.is_landscape(path): w_list.append(path) else: h_list.append(path) logcm.print_obj(w_list, 'w_list')
#!/usr/bin/env python # -*- coding: utf-8 -*- """ 把EXCEL文件转成代码的使用示例 """ from common import loadcfgcm from codegen.codegen_load_xls import CodeGenXlsLoader from codegen.codegen_mk import CodeGenModuleMaker # 配置 default_config = """ { "xls_path": "./input/xxxxx接口明细v1.0.xlsx", "sheet_name": "某个模块", "tpl_path": "./template/xls_to_interface", "out_path": "./output" } """ if __name__ == '__main__': # 加载配置文件 cfg = loadcfgcm.load("codegen_maker_run.json", default_config) loader = CodeGenXlsLoader() mdl = loader.xls_to_module(cfg["xls_path"], cfg["sheet_name"]) maker = CodeGenModuleMaker(cfg["tpl_path"], cfg["out_path"]) maker.make(mdl)
from common import xlscm from common import loadcfgcm from common import logcm # 配置 default_config = """ { "left_file_path" : "./temp/xxxxxx.xlsx", "right_file_path" : "./temp/yyyyyyy.xlsx", "sheet_name" : "XXX表", "title_line" : 10, "start_line" : 13, "pk_col" : 1, "start_col" : 2, "ignore_new_line": true } """ # 加载配置文件 cfg = loadcfgcm.load("file_compare_xls.json", default_config) # 取得指定目录下的文件列表 diff_list = xlscm.cmp_excel(**cfg) logcm.print_obj(diff_list, "diff_list", show_table=True, show_json=True) # # for diff in diff_list: # print(diff)
from selenium import webdriver #导入selenium import os #导入os模块 from selenium.webdriver.chrome.options import Options # 缺省配置及说明 # 链接模式:SELECT 从选定页面开始,根据下一页按钮,循环抓取 # 链接模式:FORMAT 按照格式,根据格式生成下一页链接,循环抓取 default_config = """ { "page_url": "http://www.somesite.to.crawl/xxxx", "local_path": "./temp" } """ # 加载配置文件 cfg = loadcfgcm.load("net_img_crawl2.json", default_config) def get_headless_chrome(): chrome_options = Options() chrome_options.add_argument('--headless') chrome_options.add_argument('--disable-gpu') driver = webdriver.Chrome('/opt/chrome/chromedriver', chrome_options=chrome_options) return driver class MMPic(): def __init__(self): #类的初始化 self.headers = { 'User-Agent':
#!/usr/bin/env python # -*- coding: utf-8 -*- """ 视频剪辑示例。 """ from common import loadcfgcm from common import videocm # 缺省配置及说明 default_config = ''' { "remark" : "视频剪切保存", "src_path": "myopener.mp4", "target_path": "myopener_sub.mp4", "start": 0, "end": 12 } ''' # 加载配置文件 cfg = loadcfgcm.load("video_cut.json", default_config) # 视频剪切 videocm.cut_save(cfg['src_path'], cfg['start'], cfg['end'], cfg['target_path'])
# 缺省配置及说明 default_config = """ { "remark" : "视频组合", "src_clips": [ { "path": "myopener.mp4", "start": 10, "end": 12 }, { "path": "video.mp4", "start": 10, "end": -18 } ], "target_path": "video_con.mp4" } """ # 加载配置文件 config_map = loadcfgcm.load("video_join.json", default_config) # 视频组合 clip_list = [] for cfg in config_map["src_clips"]: clip = videocm.cut_save(cfg['src_path'], cfg['start'], cfg['end']) clip_list.append(clip) videocm.concat_save(clip_list, config_map["target_path"])
from common import logcm from common import loadcfgcm import PyPDF2 as pdf default_config = """ { "input_path": "/path/to/your/pdf/file", "output_path": "/path/to/your/new/pdf/file", "sub_pages": [0, 2, 4] } """ # 加载配置文件 cfg = loadcfgcm.load("file_pdf_sub.json", default_config) # PDF读取 reader = pdf.PdfFileReader(cfg["input_path"]) logcm.print_obj(reader.getNumPages(), "pages") pdf_page_list = list() for i in cfg["sub_pages"]: # page number starts with 0 page = reader.getPage(i - 1) pdf_page_list.append(page) logcm.print_obj(pdf_page_list, "pdf_page_list") # PDF输出 writer = pdf.PdfFileWriter() for page in pdf_page_list:
from common import logcm from common.dboraclecm import DbOracleClient # 配置 default_config = """ { "host": "localhost", "port": 1521, "db": "orcl", "user": "******", "passwd": "root" } """ # 加载配置文件 cfg = loadcfgcm.load("db_oracle_test1.json", default_config) # 建立和数据库系统的连接 dbClient = DbOracleClient("oracle", cfg) # 执行SQL,创建一个表 sql = """ create table tb_user( id number, name varchar2(50), password varchar(50), primary key(id) ) """ dbClient.execute(sql)
#!/usr/bin/env python # -*- coding: utf-8 -*- """ SSH使用示例。 """ from common import loadcfgcm from common.netsshcm import SshClient # 配置 default_config = """ { "ip": "10.1.1.101", "port": 22, "username": "******", "password": "******", "remoteFile": "/usr/local/logs/xxx.log" } """ # 加载配置文件 cfg = loadcfgcm.load("net_ssh_tail.json", default_config) # SSH连接 ssh = SshClient(cfg) ssh.tail_print(cfg['remoteFile']) # 关闭连接 # sshcm.close_ssh_conn(ssh, sftp)
default_config = """ { "browser_type": "Chrome", "url": "https://www.baidu.com/", "actionList": [ { "find_type": "id", "find_val": "kw", "action_type": "set_input", "input_val": "翻转" }, { "find_type": "id", "find_val": "su", "action_type": "do_click" } ] } """ # 加载配置文件 cfg = loadcfgcm.load("net_browser_chrome.json", default_config) # 测试客户端 client = BrowserClient(cfg["browser_type"]) client.open(cfg["url"]) client.exe_actions(cfg["actionList"])
# 配置 default_config = """ { "server": "http://xxxx.xxxx.com.cn/xxx-gw", "login_url": "xxxx/xxxLogin.app", "login_param": "{'userName':'******','passWord':'******'}", "username": "******", "password": "******", "terminal": "APP", "appType": "ios", "appVersionNo": "1.0", "accessTerminal": "---JUNIT----", "encoding": "utf-8", "test_uri": "xxxx/xxxxxxx.app", "test_param": {"listType":"TJ","pageSize":"10"} } """ # 加载配置文件 cfg = loadcfgcm.load("net_test.json", default_config) # 测试客户端 client = NetTestClient(cfg) isOk = client.default_login() # 测试URL uri = cfg["test_uri"] param = cfg["test_param"] content = client.get_web_content(uri, param, True)
{ "XXXXXX": [{ "sheet_name": "明细", "title_line": 0, "col_titles": ["基金名称", "投资者名称", "客户类型", "证件类型", "证件号码", "????"] }], "YYYYYY": [{ "sheet_name": "客户明细J", "title_line": 0, "col_titles": ["????", "客户名称", "客户类型", "证件类型", "证件号码", "持有份额"] }] } """ # 加载配置文件 config_map = loadcfgcm.load("file_load_xls.json", default_config) # 取得指定目录下的文件列表 path_list = filecm.search_files(root_dir, '.xlsx,.xls', r'^[^~]+') logcm.print_obj(path_list, "path_list") # 读取文件数 read_file_cnt = 0 # 读取数据行数 read_line_cnt = 0 # 路径列表 for path in path_list: # 短文件名 short_name = filecm.short_name(path) # 根据文件名取得配置列表
# 配置 default_config = """ { "redis1": { "host": "localhost", "port": 6379 }, "redis2": { "host": "localhost", "port": 6379 } } """ # 加载配置文件 cfg = loadcfgcm.load("net_redis_cfg.json", default_config) # Redis服务器1 rds1 = RedisClient(cfg['redis1']) # Redis服务器2 rds2 = RedisClient(cfg['redis2']) # 字符串值 key1 = "test_key-1" val1 = "112233" # 设值示例 rds1.set_val(key1, val1) # 取值示例 rst1 = rds1.get(key1) # 确定取出值和存入值是否一致 checkcm.check_equal(val1, rst1, "redis string %s" % key1)
def __init__(self): # 加载配置文件 self.cfg_db = loadcfgcm.load("codegen_loader_db.json", default_config)
default_config = """ { "remark" : "图片批量转换格式,大小,并移动", "action" : "copy|move", "src_path": "", "target_path": "", "target_w": 1280, "target_h": 800, "src_ext": "png", "target_ext": "jpg" } """ # 加载配置文件 cfg = loadcfgcm.load("file_img_convert.json", default_config) # 检索图片列表 search_path = '' path_list = filecm.search_files(cfg["src_path"], '.' + cfg["src_ext"], r'^[^\.]+') logcm.print_obj(path_list, 'path_list') # 横版图片路径列表 w_list = [] h_list = [] count = 1 for path in path_list: # 调整图片尺寸并保存 (file_path, file_name) = os.path.split(path) (short_name, extension) = os.path.splitext(file_name)
default_config = """ { "host": "localhost", "port": 27017, "db": "xxxx", "user": "******", "passwd": "root", "collection": { "stock" : "ts.xxxx", "index" : "ts.xxxx" } } """ # 加载配置文件 cfg = loadcfgcm.load("db_mongodb_test1.json", default_config) # 建立和数据库系统的连接 dbClient = DbMongoClient("mongodb", cfg) # mongodb query code stock_code = "000001.SZ" fund_code = '110022' index_stock_code = "399300.SZ" start_date = "2015-02-20" end_date = "2018-03-13" def load_data(set_name, stock_code, start_date, end_date): """ :param set_name: 数据集名
from common import logcm from common import webcm # 缺省配置及说明 default_config = """" { "site_list": [ { "url": "http://www.baidu.com/", "name": "baidu.txt" }, { "url": "http://www.163.com/", "name": "163.txt" } ] } """ # 定义并创建临时目录 tmp_path = './temp/net/curl/' + datecm.now_time_str() filecm.makedir(tmp_path) # 加载配置文件 config_map = loadcfgcm.load("net_curl.json", default_config) # 按照站点一览进行循环 for cfg in config_map["site_list"]: result = webcm.curl(cfg["url"], tmp_path, cfg["name"]) logcm.print_obj(result, "result-%s" % cfg["name"])
# 配置 default_config = """ { "img_root": "./images/img", "img_ext": ".jpeg", "max_count" : 10, "fps": 10, "save_path": "./temp/output.avi", "width": 1024, "height": 683 } """ # 加载配置文件 cfg = loadcfgcm.load("cv_video_from_img.json", default_config) # 创建目录 filecm.makedir(cfg['save_path'], True) filecm.makedir('./temp/cv/video-from-img') # 新建视频写入类 fourcc = cv2.VideoWriter_fourcc(*"MJPG") videoWriter = cv2.VideoWriter(cfg['save_path'], fourcc, cfg['fps'], (cfg['width'], cfg['height'])) im_output = VideoImageOutput(videoWriter) # 取得图片列表 path_list = filecm.search_files(cfg["img_root"], cfg['img_ext'], r'^[^\.]+') # 取得处理数量 max_size = cfg['max_count']
from common import opencvcm # 配置 default_config = """ { "img_root": "./images/faces/", "max_count" : 10, "fps": 1, "save_path": "./temp/output.pptx", "width": 1024, "height": 683 } """ # 加载配置文件 cfg = loadcfgcm.load("file_pptx_from_img.json", default_config) pptFile = pptx.Presentation() # 取得图片列表 path_list = filecm.search_files(cfg["img_root"], '.jpeg', r'^[^\.]+') # 按图片编号顺序导入 for fn in path_list: slide = pptFile.slides.add_slide(pptFile.slide_layouts[1]) # 为PPTX文件当前幻灯片中第一个文本框设置文字,本文代码中可忽略 slide.shapes.placeholders[0].text = fn[:fn.rindex('.')] # 导入并为当前幻灯片添加图片,起始位置和尺寸可修改 slide.shapes.add_picture(fn, Inches(0), Inches(0), Inches(10), Inches(7.5))
from common.dbmysqlcm import DbMysqlClient # 配置 default_config = """ { "host": "localhost", "port": 3306, "db": "test", "charset":"utf8", "user": "******", "passwd": "root" } """ # 加载配置文件 cfg = loadcfgcm.load("db_mysql_test1.json", default_config) try: # 获取一个数据库连接,with关键字 表示退出时,conn自动关闭 # with 嵌套上一层的with 要使用closing() # 建立和数据库系统的连接 dbClient = DbMysqlClient("mysql", cfg) print("connect database successfully") # 删除表 dbClient.execute("DROP TABLE IF EXISTS COMPANY") # 创建表 sql = """ CREATE TABLE IF NOT EXISTS COMPANY (ID INTEGER PRIMARY KEY NOT NULL auto_increment,
import sys from OpenGL.GL import * from OpenGL.GLUT import * from OpenGL.GLU import * from PIL import Image from common import filecm from common import loadcfgcm # 加载配置文件 default_config = """ { "img_root": "./images/faces", "img_ext": ".jpeg" } """ cfg = loadcfgcm.load("gl_texture.json", default_config) class MyPyOpenGLTest: def __init__(self, width=1024, height=683, title='MyPyOpenGLTest'.encode()): glutInit(sys.argv) glutInitDisplayMode(GLUT_RGBA | GLUT_DOUBLE | GLUT_DEPTH) glutInitWindowSize(width, height) self.window = glutCreateWindow(title) glutDisplayFunc(self.Draw) glutIdleFunc(self.Draw) self.InitGL(width, height) # 绕各坐标轴旋转的角度
default_mails = """ { "mail_list": [ { "from": "*****@*****.**", "to": "*****@*****.**", "subject": "Welcome Home", "content": "Hello, my friend, we are looking for you." } ] } """ # 加载配置文件 cfg = loadcfgcm.load("net_smtp_server.json", default_server) mails = loadcfgcm.load("net_smtp_mails.json", default_mails) # 登录服务器 server = mailcm.login_smtp_server(cfg["host"], cfg["port"], cfg["user"], cfg["pwd"], bool(cfg["ssl"])) logcm.print_obj(server, "server") # 发送邮件 for mail in mails["mail_list"]: result = mailcm.send_mail(server, mail["from"], mail["to"], mail["subject"], mail["content"]) logcm.print_obj(result, "result-%s" % mail["subject"]) # 退出服务器 server.quit()