欢迎来到 WordMarker 的文档!¶
概述¶
WordMarker是一个文档生成器,他提供了以下主要的功能。
读写
.csv
文件。你可以使用
CsvTemplate
批量地读取.csv
文件或者读取单个.csv
文件转换为DataFrame
类型的数据。你可以使用
CsvTemplate
将DataFrame
类型的数据转换为.csv
文件。
读写数据库。
你可以使用
PdbcTemplate
将DataFrame
类型的数据写入到数据库中。你可以使用
PdbcTemplate
将数据库中的数据转换为DataFrame
类型的数据。
生成Word文档。
你可以使用
WordTemplate
获取文本、图片、模板,通过模板生成固定格式的Word文档。
其他。
提供了一些实用的工具类,可以简化开发,它们位于
wordmarker.utils
模块中,使用方法可以参考API文档。
快速入门¶
快速入门¶
在快速入门中,你将使用 wordmarker
构建一个示例项目,它包含了 wordmarker
的基本使用。你可以在 GitHub 上找到该示例。
环境搭建¶
初始化项目¶
打开终端,进入项目的根目录,输入
wordmarker-quickstart
命令,按照提示完成项目的初始化欢迎使用 WordMarker 的脚手架,请按照提示完成项目的构建。 ------------------------------------------------- 配置数据库 ------------------------------------------------- 1. PostgreSQL 2. MySql 3. Oracle 4. Microsoft 数据库的类型,默认为 [1]: 1 用户名,默认为 [postgres]: 密码,默认为 [123456]: 123456 主机,默认为 [localhost]: 端口,默认为 [5432]: 要连接的数据库: example ------------------------------------------------- 配置输入输出目录 ------------------------------------------------- 是否启用默认的目录配置,默认为 [Y] [Y/n]: y 成功创建data/in目录 成功创建data/out目录 成功创建template/in目录 成功创建template/out目录 成功创建img目录 成功创建text目录 成功构建项目 ^_^ !
生成的目录结构如下
../wordmarker-example/ /data/in /data/out /img /template/in /template/out /text /config.yaml
config.yaml
文件中包含相关的配置# ====================================================================================================== # ----------------------配置数据库信息 # # 详细信息请查看 https://docs.sqlalchemy.org/en/14/core/engines.html # url: # postgresql: "postgresql://username:password@localhost:5432/database" # mysql: mysql+pymysql://username:password@localhost:3306/database # echo: 是否开启日志 # encoding: 编码,默认utf-8 # pool_size: 连接池大小 # max_overflow: 连接的数量,以允许在连接池"溢出" # pool_recycle: 在给定的秒数过去之后,此设置将导致池回收连接。默认为-1。例如,设置为3600表示一小时后将回收连接 # pool_timeout: 放弃从池中获得连接之前要等待的秒数 # echo_pool: 是否开启日志 pdbc: engine: url: postgresql://postgres:123456@localhost:5432/example echo: false encoding: utf-8 pool_size: 5 max_overflow: 10 pool_recycle: -1 pool_timeout: 30.0 echo_pool: false # ====================================================================================================== # ----------------------配置csv文件信息 # # path: 文件的输入路径,可以是文件,也可以是目录 # 路径分隔符为 '/' 或 '\' # path的值为相对于当前yaml文件的路径 # dir: 文件的输出目录 # 路径分隔符为 '/' 或 '\' # dir的值为相对于当前yaml文件的路径 data: csv: input: path: data/in output: dir: data/out docx: input: path: template/in output: dir: template/out img: output: dir: img text: input: path: text # ======================================================================================================
创建
main.py
文件,最终生成的目录如下../wordmarker-example/ /data/in /data/out /img /template/in /template/out /text /config.yaml /main.py
编写脚本¶
初始化
WordMarker
上下文和相关模板from wordmarker.contexts import WordMarkerContext from wordmarker.templates import CsvTemplate, PdbcTemplate, WordTemplate if __name__ == '__main__': # 初始化上下文 WordMarkerContext("config.yaml") # 读写csv文件的模板 csv_tpl = CsvTemplate() # 读写数据库的模板 pdbc_tpl = PdbcTemplate() # 读写word文档的模板 word_tpl = WordTemplate()
下载
景气指数_加盐.csv
文件,将文件放入../wordmarker-example/data/in
目录中,编写代码从配置中获取.csv
文件,类型为DataFrame
from wordmarker.contexts import WordMarkerContext from wordmarker.templates import CsvTemplate, PdbcTemplate, WordTemplate if __name__ == '__main__': # 初始化上下文 WordMarkerContext("config.yaml") # 读写csv文件的模板 csv_tpl = CsvTemplate() # 读写数据库的模板 pdbc_tpl = PdbcTemplate() # 读写word文档的模板 word_tpl = WordTemplate() # 从配置中获取.csv文件,类型为DataFrame csv_dict = csv_tpl.csv_to_df() prosperity_index_file = csv_dict['景气指数_加盐.csv'] print(prosperity_index_file)
输出结果 起飞年 起飞星期 景气指数 0 2015 1 89.57518 1 2015 10 92.69366 2 2015 11 92.43514 3 2015 12 92.51584 4 2015 13 92.45800 .. ... ... ... 207 2018 53 85.67820 208 2018 6 94.36436 209 2018 7 94.22866 210 2018 8 94.80134 211 2018 9 94.37548 [212 rows x 3 columns]
创建数据库
example
,将DataFrame
类型的数据写入数据库from wordmarker.contexts import WordMarkerContext from wordmarker.templates import CsvTemplate, PdbcTemplate, WordTemplate if __name__ == '__main__': # 初始化上下文 WordMarkerContext("config.yaml") # 读写csv文件的模板 csv_tpl = CsvTemplate() # 读写数据库的模板 pdbc_tpl = PdbcTemplate() # 读写word文档的模板 word_tpl = WordTemplate() # 从配置中获取.csv文件,类型为DataFrame csv_dict = csv_tpl.csv_to_df() prosperity_index_file = csv_dict['景气指数_加盐.csv'] print(prosperity_index_file) # 将DataFrame类型的数据写入数据库 pdbc_tpl.update_table(prosperity_index_file, "t_prosperity_index")
从
example
数据库中获取数据,类型为DataFrame
from wordmarker.contexts import WordMarkerContext from wordmarker.templates import CsvTemplate, PdbcTemplate, WordTemplate if __name__ == '__main__': # 初始化上下文 WordMarkerContext("config.yaml") # 读写csv文件的模板 csv_tpl = CsvTemplate() # 读写数据库的模板 pdbc_tpl = PdbcTemplate() # 读写word文档的模板 word_tpl = WordTemplate() # 从配置中获取.csv文件,类型为DataFrame csv_dict = csv_tpl.csv_to_df() prosperity_index_file = csv_dict['景气指数_加盐.csv'] print(prosperity_index_file) # 将DataFrame类型的数据写入数据库 pdbc_tpl.update_table(prosperity_index_file, "t_prosperity_index") # 从数据库中获取数据,类型为DataFrame prosperity_index_database = pdbc_tpl.query_table("t_prosperity_index") print(prosperity_index_database)
输出结果 起飞年 起飞星期 景气指数 0 2015 1 89.57518 1 2015 10 92.69366 2 2015 11 92.43514 3 2015 12 92.51584 4 2015 13 92.45800 .. ... ... ... 207 2018 53 85.67820 208 2018 6 94.36436 209 2018 7 94.22866 210 2018 8 94.80134 211 2018 9 94.37548 [212 rows x 3 columns] 起飞年 起飞星期 景气指数 0 2015 1 89.57518 1 2015 10 92.69366 2 2015 11 92.43514 3 2015 12 92.51584 4 2015 13 92.45800 .. ... ... ... 207 2018 53 85.67820 208 2018 6 94.36436 209 2018 7 94.22866 210 2018 8 94.80134 211 2018 9 94.37548 [212 rows x 3 columns]
将
DataFrame
类型的数据转换为.csv
文件from wordmarker.contexts import WordMarkerContext from wordmarker.templates import CsvTemplate, PdbcTemplate, WordTemplate if __name__ == '__main__': # 初始化上下文 WordMarkerContext("config.yaml") # 读写csv文件的模板 csv_tpl = CsvTemplate() # 读写数据库的模板 pdbc_tpl = PdbcTemplate() # 读写word文档的模板 word_tpl = WordTemplate() # 从配置中获取.csv文件,类型为DataFrame csv_dict = csv_tpl.csv_to_df() prosperity_index_file = csv_dict['景气指数_加盐.csv'] print(prosperity_index_file) # 将DataFrame类型的数据写入数据库 pdbc_tpl.update_table(prosperity_index_file, "t_prosperity_index") # 从数据库中获取数据,类型为DataFrame prosperity_index_database = pdbc_tpl.query_table("t_prosperity_index") print(prosperity_index_database) # 将DataFrame类型的数据转换为.csv文件 csv_tpl.df_to_csv({'景气指数_数据库.csv': prosperity_index_database})
输出目录 ../wordmarker-example/data/out/景气指数_数据库.csv
编写
example.yaml
和meta.yaml
文件,将这两个文件放在../wordmarker-example/text/
目录下example.yaml
example: title: '景气指数' img_title: '图1 景气指数' explanation: - '2017年上半年民航全市场景气指数上涨:国内航线154,国际航线125,港澳台航线171。' - '2017年国内航线景气指数同比增幅放缓至0.40%,巿场稳步上升。' - '2017年国际航线景气指数增速上升,同比增幅与2016年放缓至0.40%,但春节峰值周景气指数超越2016年峰值,达到94.24,再创新高。'
meta.yaml
meta: author: '{{ author }}' email: 'chensixiang1234@gamil.com'
在
meta.yaml
文件中meta.author
对应的值包含插值表达式。要对表达式赋值,需要创建AbstractConverter
类的实现类,并且创建实现类的对象from wordmarker.contexts import WordMarkerContext from wordmarker.templates import CsvTemplate, PdbcTemplate, WordTemplate, AbstractConverter class TextConverter(AbstractConverter): def __init__(self, word_tpl_: WordTemplate): super().__init__(word_tpl_) @staticmethod def author(): return 'chensixiang' if __name__ == '__main__': # 初始化上下文 WordMarkerContext("config.yaml") # 读写csv文件的模板 csv_tpl = CsvTemplate() # 读写数据库的模板 pdbc_tpl = PdbcTemplate() # 读写word文档的模板 word_tpl = WordTemplate() # 从配置中获取.csv文件,类型为DataFrame csv_dict = csv_tpl.csv_to_df() prosperity_index_file = csv_dict['景气指数_加盐.csv'] print(prosperity_index_file) # 将DataFrame类型的数据写入数据库 pdbc_tpl.update_table(prosperity_index_file, "t_prosperity_index") # 从数据库中获取数据,类型为DataFrame prosperity_index_database = pdbc_tpl.query_table("t_prosperity_index") print(prosperity_index_database) # 将DataFrame类型的数据转换为.csv文件 csv_tpl.df_to_csv({'景气指数_数据库.csv': prosperity_index_database}) # 创建TextConverter对象,它继承了AbstractConverter,可以将yaml模板中的插值表达式进行转换 text = TextConverter(word_tpl)
下载
default_tpl.docx
文件,将文件放入../wordmarker-example/template/in
目录中,下载景气指数.png
文件,将文件放入../wordmarker-example/img
目录中,并修改config.yaml
中的data.docx.input.path
的配置,以及编写content
字典config.yaml
# ====================================================================================================== # ----------------------配置数据库信息 # # 详细信息请查看 https://docs.sqlalchemy.org/en/14/core/engines.html # url: # postgresql: "postgresql://username:password@localhost:5432/database" # mysql: mysql+pymysql://username:password@localhost:3306/database # echo: 是否开启日志 # encoding: 编码,默认utf-8 # pool_size: 连接池大小 # max_overflow: 连接的数量,以允许在连接池"溢出" # pool_recycle: 在给定的秒数过去之后,此设置将导致池回收连接。默认为-1。例如,设置为3600表示一小时后将回收连接 # pool_timeout: 放弃从池中获得连接之前要等待的秒数 # echo_pool: 是否开启日志 pdbc: engine: url: postgresql://postgres:123456@localhost:5432/example echo: false encoding: utf-8 pool_size: 5 max_overflow: 10 pool_recycle: -1 pool_timeout: 30.0 echo_pool: false # ====================================================================================================== # ----------------------配置csv文件信息 # # path: 文件的输入路径,可以是文件,也可以是目录 # 路径分隔符为 '/' 或 '\' # path的值为相对于当前yaml文件的路径 # dir: 文件的输出目录 # 路径分隔符为 '/' 或 '\' # dir的值为相对于当前yaml文件的路径 data: csv: input: path: data/in output: dir: data/out docx: input: path: template/in/default_tpl.docx output: dir: template/out img: output: dir: img text: input: path: text # ======================================================================================================
from wordmarker.contexts import WordMarkerContext from wordmarker.templates import CsvTemplate, PdbcTemplate, WordTemplate, AbstractConverter from docxtpl import InlineImage from docx.shared import Mm class TextConverter(AbstractConverter): def __init__(self, word_tpl_: WordTemplate): super().__init__(word_tpl_) @staticmethod def author(): return 'chensixiang' if __name__ == '__main__': # 初始化上下文 WordMarkerContext("config.yaml") # 读写csv文件的模板 csv_tpl = CsvTemplate() # 读写数据库的模板 pdbc_tpl = PdbcTemplate() # 读写word文档的模板 word_tpl = WordTemplate() # 从配置中获取.csv文件,类型为DataFrame csv_dict = csv_tpl.csv_to_df() prosperity_index_file = csv_dict['景气指数_加盐.csv'] print(prosperity_index_file) # 将DataFrame类型的数据写入数据库 pdbc_tpl.update_table(prosperity_index_file, "t_prosperity_index") # 从数据库中获取数据,类型为DataFrame prosperity_index_database = pdbc_tpl.query_table("t_prosperity_index") print(prosperity_index_database) # 将DataFrame类型的数据转换为.csv文件 csv_tpl.df_to_csv({'景气指数_数据库.csv': prosperity_index_database}) # 创建TextConverter对象,它继承了AbstractConverter,可以将yaml模板中的插值表达式进行转换 text = TextConverter(word_tpl) content = { # 直接赋值 'title': '景气指数', # 从example.yaml模板中获取值 'img_title': word_tpl.get_value("example.img_title"), # 图片 'img': InlineImage(word_tpl.tpl, word_tpl.get_img_file('景气指数.png'), width=Mm(100)), # 从example.yaml模板中获取值 'explanation': word_tpl.get_value("example.explanation"), # 从meta.yaml模板中获取将插值表达式进行转换后的值 'author': text.get_value("meta.author"), # 从meta.yaml模板中获取值 'email': word_tpl.get_value("meta.email"), }
添加
content
到总的上下文中,并输出word文档from wordmarker.contexts import WordMarkerContext from wordmarker.templates import CsvTemplate, PdbcTemplate, WordTemplate, AbstractConverter from docxtpl import InlineImage from docx.shared import Mm class TextConverter(AbstractConverter): def __init__(self, word_tpl_: WordTemplate): super().__init__(word_tpl_) @staticmethod def author(): return 'chensixiang' if __name__ == '__main__': # 初始化上下文 WordMarkerContext("config.yaml") # 读写csv文件的模板 csv_tpl = CsvTemplate() # 读写数据库的模板 pdbc_tpl = PdbcTemplate() # 读写word文档的模板 word_tpl = WordTemplate() # 从配置中获取.csv文件,类型为DataFrame csv_dict = csv_tpl.csv_to_df() prosperity_index_file = csv_dict['景气指数_加盐.csv'] print(prosperity_index_file) # 将DataFrame类型的数据写入数据库 pdbc_tpl.update_table(prosperity_index_file, "t_prosperity_index") # 从数据库中获取数据,类型为DataFrame prosperity_index_database = pdbc_tpl.query_table("t_prosperity_index") print(prosperity_index_database) # 将DataFrame类型的数据转换为.csv文件 csv_tpl.df_to_csv({'景气指数_数据库.csv': prosperity_index_database}) # 创建TextConverter对象,它继承了AbstractConverter,可以将yaml模板中的插值表达式进行转换 text = TextConverter(word_tpl) content = { # 直接赋值 'title': '景气指数', # 从example.yaml模板中获取值 'img_title': word_tpl.get_value("example.img_title"), # 图片 'img': InlineImage(word_tpl.tpl, word_tpl.get_img_file('景气指数.png'), width=Mm(100)), # 从example.yaml模板中获取值 'explanation': word_tpl.get_value("example.explanation"), # 从meta.yaml模板中获取将插值表达式进行转换后的值 'author': text.get_value("meta.author"), # 从meta.yaml模板中获取值 'email': word_tpl.get_value("meta.email"), } # 添加content到总的上下文中 word_tpl.append(content) # 输出word文档 word_tpl.build("example.docx")
输出目录 ../wordmarker-example/template/out/ /example/ /img/景气指数.png /example.docx
下载
example.docx
文件
参考文档¶
敬请期待
API 文档¶
wordmarker.contexts package¶
- 作者
陈思祥
- 时间
2021年4月
- 概述
当前模块包含整个应用的上下文。
wordmarker.contexts.context
上下文的抽象类,所有的上下文都要继承它。
wordmarker.contexts.system_context
系统上下文,获取和系统有关的属性。例如,路径分隔符,文件分隔符等。
wordmarker.contexts.yaml_context
yaml文件的上下文,解析yaml文件。根据key值返回yaml文件中对应的value值。
wordmarker.contexts.application_context
应用上下文,用来初始化工厂和其他的上下文。 一般初始化,应用上下文WordMarkerContext来初始化整个应用。
Submodules¶
wordmarker.contexts.application_context module¶
- class WordMarkerContext(*args, **kwargs)[源代码]¶
基类:
wordmarker.contexts.context.Context
应用上下文,你可以从上下文中获取到: bean_factory:工厂里存放的bean实例的相关信息 yaml_context:加载的yaml文件的相关信息
- property bean_factory¶
注解
获取bean工厂
- 返回
bean工厂
- property yaml_context¶
注解
获取yaml文件的上下文
- 返回
yaml文件的上下文
wordmarker.contexts.context module¶
wordmarker.contexts.system_context module¶
- class SystemContext[源代码]¶
基类:
wordmarker.contexts.context.Context
系统上下文,获取和系统有关的属性
- file_separator = ':'¶
- path_separator = '/'¶
wordmarker.contexts.yaml_context module¶
- class YamlContext(path)[源代码]¶
基类:
wordmarker.contexts.context.Context
,wordmarker.loaders.yaml_resource_loader.YamlResourceLoader
yaml文件的上下文
- get_value(prop)[源代码]¶
注解
从yaml字典中,根据属性获取对应的值
加载多个yaml文件,排在后面的文件里的值,会覆盖前面的文件里的值
- 参数
prop – 属性,用
.
分隔,例如,pdbc.engine.url
- 返回
yaml字典中对应的值
- get_yaml()[源代码]¶
注解
获取从yaml文件中读取的数据,类型为dict
- 返回
path为文件,返回一个字典,内容为yaml文件的内容
path为目录,返回一个嵌套的字典
key为yaml文件的绝对路径
value为yaml文件的内容,是一个字典
- property path¶
注解
存放yaml文件的路径,可以是文件,也可以是目录
- 返回
yaml文件的路径
wordmarker.creatives package¶
- 作者
陈思祥
- 时间
2021年4月
- 概述
当前模块使用工厂和生成器模式来管理对象的创建。
wordmarker.creatives.factory
工厂模块。
wordmarker.creatives.builder
生成器模块。
Submodules¶
wordmarker.creatives.builder module¶
wordmarker.creatives.factory module¶
- class BeanFactory(*args, **kwargs)[源代码]¶
基类:
wordmarker.creatives.factory.AbstractBeanFactory
AbstractBeanFactory的实现类
- class FactoryBean(*args, **kwargs)[源代码]¶
基类:
wordmarker.creatives.factory.BeanFactory
BeanFactory的子类 通过add_bean方法,将bean实例添加到工厂
wordmarker.data package¶
- 作者
陈思祥
- 时间
2021年4月
- 概述
当前模块用来处理数据和资源。
wordmarker.data.resource
加载的资源,包含和资源相关的属性和判断。
wordmarker.data.formatter
格式化数据,对某些数据进行处理。
Submodules¶
wordmarker.data.formatter module¶
- class SqlFormatter[源代码]¶
基类:
wordmarker.data.formatter.Formatter
格式化sql语句
wordmarker.data.resource module¶
- class Resource(*args)[源代码]¶
基类:
wordmarker.contexts.system_context.SystemContext
资源类,包含与资源相关的属性和判断的方法
- get_file_encoding()[源代码]¶
注解
获取文件的编码
- 返回
是文件,获取文件的编码,返回一个文件编码的字符串
是目录,获取当前目录下所有文件的编码,返回一个字典
key为文件的绝对路径
value为文件的编码
wordmarker.loaders package¶
- 作者
陈思祥
- 时间
2021年4月
- 概述
当前模块用来加载资源。
wordmarker.loaders.default_resource_loader
默认的资源加载器。
wordmarker.loaders.yaml_resource_loader
yaml文件的资源加载器。
wordmarker.loaders.resource_loader
资源加载器的抽象类。
Submodules¶
wordmarker.loaders.default_resource_loader module¶
- class DefaultResourceLoader(*args)[源代码]¶
基类:
wordmarker.loaders.resource_loader.ResourceLoader
默认的资源加载器
- get_resource(path=None) → wordmarker.data.resource.Resource[源代码]¶
注解
获取资源
- 参数
path – 路径
- 返回
资源实例
- load(resource: wordmarker.data.resource.Resource)[源代码]¶
注解
加载资源
- 参数
resource – 资源实例
- 返回
资源为文件,获取文件中的数据
资源为目录,获取目录下所有文件中的数据,返回一个字典
key为文件的绝对路径
value为文件的数据
wordmarker.loaders.resource_loader module¶
wordmarker.loaders.yaml_resource_loader module¶
- class YamlResourceLoader(*args)[源代码]¶
基类:
wordmarker.loaders.default_resource_loader.DefaultResourceLoader
yaml文件的资源加载器
- load(resource: wordmarker.data.resource.Resource)[源代码]¶
注解
加载yaml资源
- 参数
resource – yaml资源实例
- 返回
yaml资源为文件,获取文件中的数据
yaml文件资源为目录,获取目录下所有yaml文件中的数据,返回一个字典
key为文件的绝对路径
value为文件的数据
wordmarker.templates package¶
- 作者
陈思祥
- 时间
2021年4月
- 概述
当前模块是WordMarker的核心模块,可以读写csv文件,操纵数据库,读写docx文件等。
wordmarker.templates.pdbc_template
操纵数据库的模板。
wordmarker.templates.csv_template
读写csv文件的模板。
wordmarker.templates.word_template
读写docx文件的模板。
Submodules¶
wordmarker.templates.csv_template module¶
- class CsvHelper(*args, **kwargs)[源代码]¶
基类:
wordmarker.loaders.default_resource_loader.DefaultResourceLoader
,wordmarker.contexts.system_context.SystemContext
通过读取配置文件,获取csv文件的相关信息
- class CsvTemplate(*args, **kwargs)[源代码]¶
基类:
wordmarker.templates.csv_template.CsvOperations
,wordmarker.templates.csv_template.CsvHelper
操作csv文件的模板
- csv_to_df(sep=<object object>, delimiter=None, header='infer', names=None, index_col=0, usecols=None, squeeze=False, prefix=None, mangle_dupe_cols=True, dtype=None, engine=None, converters=None, true_values=None, false_values=None, skipinitialspace=False, skiprows=None, skipfooter=0, nrows=None, na_values=None, keep_default_na=True, na_filter=True, verbose=False, skip_blank_lines=True, parse_dates=False, infer_datetime_format=False, keep_date_col=False, date_parser=None, dayfirst=False, cache_dates=True, iterator=False, chunksize=None, compression='infer', thousands=None, decimal: str = '.', lineterminator=None, quotechar='"', quoting=0, doublequote=True, escapechar=None, comment=None, encoding=None, dialect=None, error_bad_lines=True, warn_bad_lines=True, delim_whitespace=False, low_memory=True, memory_map=False, float_precision=None, storage_options: Optional[Dict[str, Any]] = None) → Union[pandas.io.parsers.TextFileReader, pandas.core.series.Series, pandas.core.frame.DataFrame, None, Dict[str, Optional[Union[pandas.io.parsers.TextFileReader, pandas.core.series.Series, pandas.core.frame.DataFrame]]]][源代码]¶
注解
从yaml配置中读取csv文件,转换为
pandas
的DataFrame
小技巧
csv_to_df的参数详情 , 请访问 pandas官网 ,了解更多信息
- 返回
多个csv文件,返回一个
DataFrame
的字典key为文件名
value为
DataFrame
一个csv文件,返回一个
DataFrame
- df_to_csv(data_dict: Dict[str, pandas.core.frame.DataFrame], sep: str = ',', na_rep: str = '', float_format: Optional[str] = None, columns: Optional[Sequence[Optional[Hashable]]] = None, header: Union[bool, List[str]] = True, index: bool = True, index_label: Union[Hashable, None, Sequence[Optional[Hashable]]] = None, mode: str = 'w', encoding: Optional[str] = None, compression: Optional[Union[str, Dict[str, Any]]] = 'infer', quoting: Optional[int] = None, quotechar: str = '"', line_terminator: Optional[str] = None, chunksize: Optional[int] = None, date_format: Optional[str] = None, doublequote: bool = True, escapechar: Optional[str] = None, decimal: str = '.', errors: str = 'strict', storage_options: Optional[Dict[str, Any]] = None)[源代码]¶
注解
将一个或多个
DataFrame
转换成csv文件,输出到指定文件夹小技巧
df_to_csv的参数详情 , 请访问 pandas官网 ,了解更多信息
- 参数
data_dict – 由
DataFrame
组成的字典,key为输出的文件名,value为DataFrame
wordmarker.templates.pdbc_template module¶
- class PdbcHelper(*args, **kwargs)[源代码]¶
基类:
object
通过读取配置文件获取数据库的信息,进而建立连接
- property engine: sqlalchemy.engine.base.Engine¶
注解
获取引擎对象
- 返回
引擎对象engine
- property engine_dict¶
注解
获取引擎对象中设置的值
- 返回
引擎对象中设置的值
key为属性
value为对应的值
- class PdbcTemplate(*args, **kwargs)[源代码]¶
基类:
wordmarker.templates.pdbc_template.PdbcOperations
,wordmarker.templates.pdbc_template.PdbcHelper
,wordmarker.data.formatter.SqlFormatter
操作数据库的模板
- execute(sql, *args, **kwargs)[源代码]¶
注解
使用sqlalchemy中的方法执行sql,建议sql类型为DDL(数据定义语言)时候使用
小技巧
如果sql为
select
,建议使用query方法如果sql为
update
,delete
,insert
,建议使用update方法- 参数
sql – sql语句
- query(sql, *args) → Union[pandas.core.frame.DataFrame, Iterator[pandas.core.frame.DataFrame]][源代码]¶
注解
查询数据库
- 参数
sql – sql语句
args – 问号对应的值
- 返回
查询的数据
- query_table(table_name, schema=None, index_col=None, coerce_float=True, parse_dates=None, columns=None, chunksize: Optional[int] = None) → Union[pandas.core.frame.DataFrame, Iterator[pandas.core.frame.DataFrame]][源代码]¶
注解
使用
pandas.read_sql_table
方法,读取整张表的数据小技巧
query_table的参数详情 , 请访问 pandas官网 ,了解更多信息
- 返回
查询的数据
- update_table(data: pandas.core.frame.DataFrame, name: str, schema=None, if_exists: str = 'replace', index: bool = False, index_label=None, chunksize=None, dtype=None, method=None)[源代码]¶
注解
使用
pandas.to_sql
方法,将数据写入数据库中的一张表中小技巧
update_table的参数详情 , 请访问 pandas官网 ,了解更多信息
- 参数
data – 数据框
wordmarker.templates.word_template module¶
- class AbstractConverter(word_tpl: wordmarker.templates.word_template.WordTemplate)[源代码]¶
基类:
object
此类是用来实现的,可以将yaml模板中的插值进行转换 定义的方法可以为@staticmethod修饰的方法,不能有任何参数,也可以为由self一个参数构成的方法
- class DocxHelper(*args, **kwargs)[源代码]¶
基类:
wordmarker.loaders.default_resource_loader.DefaultResourceLoader
通过读取配置文件,获取docx文件模板的相关信息
- property docx¶
注解
获取docx文件的绝对路径
- 返回
yaml文件中
data.docx.input.path
是目录,返回当前目录下docx文件的绝对路径yaml文件中
data.docx.input.path
是文件,返回docx文件的绝对路径
- property docx_in_path¶
注解
通过读取yaml文件的
data.docx.input.path
属性,获取输入的docx文件或目录的绝对路径- 返回
docx文件或目录的绝对路径
- property docx_out_path¶
注解
通过读取yaml文件的
data.docx.output.dir
属性,获取输出的docx目录的绝对路径- 返回
docx目录的绝对路径
- class ImgHelper(*args, **kwargs)[源代码]¶
基类:
wordmarker.contexts.system_context.SystemContext
通过读取配置文件,获取img文件的相关信息
- get_img_file(img_name)[源代码]¶
注解
根据图片的名字,获取图片的绝对路径
警告
必须先将图片输出到输出目录下,才能获取到
- 参数
img_name – 图片的名字
- 返回
图片的绝对路径
- property img_out_path¶
注解
通过读取yaml文件的
data.img.output.dir
属性,获取输出的img目录的绝对路径- 返回
img目录的绝对路径
- class TextHelper(*args, **kwargs)[源代码]¶
基类:
object
通过读取配置文件,获取文本yaml文件的相关信息
- get_value(prop)[源代码]¶
注解
从yaml字典中,根据属性获取对应的值
加载多个yaml文件,排在后面的文件里的值,会覆盖前面的文件里的值
- 参数
prop – 属性,用
.
分隔,例如,pdbc.engine.url
- 返回
yaml字典中对应的值
- get_yaml() → dict[源代码]¶
注解
获取从yaml文件中读取的数据,类型为dict
- 返回
path为文件,返回一个字典,内容为yaml文件的内容
path为目录,返回一个嵌套的字典
key为yaml文件的绝对路径
value为yaml文件的内容,是一个字典
- get_yaml_singleton()[源代码]¶
注解
获取从
data.text.input.path
属性中对应的路径下所有yaml文件中的数据,类型为dict加载多个yaml文件,排在后面的文件里的值,会覆盖前面的文件里的值
- 返回
返回一个字典,内容为所有yaml文件的内容
- get_yaml_singleton_str()[源代码]¶
注解
获取从
data.text.input.path
属性中对应的路径下所有yaml文件中的数据,类型为str,内容为一个字典加载多个yaml文件,排在后面的文件里的值,会覆盖前面的文件里的值
- 返回
返回一个字符串,内容为一个字典,内容为所有yaml文件的内容
- property text_in_path¶
注解
通过读取yaml文件的
data.text.input.path
属性,获取输入的文本yaml文件的绝对路径- 返回
文本yaml文件的绝对路径
- class WordTemplate(*args, **kwargs)[源代码]¶
基类:
wordmarker.creatives.builder.AbstractBuilder
,wordmarker.templates.word_template.TextHelper
,wordmarker.templates.word_template.ImgHelper
,wordmarker.templates.word_template.DocxHelper
操作docx文件的模板
- property tpl¶
注解
获取
DocxTemplate
对象,小技巧
DocxTemplate
对象的详细信息,请访问 python-docx-template的文档- 返回
DocxTemplate
对象
wordmarker.utils package¶
- 作者
陈思祥
- 时间
2021年4月
- 概述
当前模块是工具模块,有操作日志、文件等的工具类
wordmarker.utils.logger
日志工具类。
wordmarker.utils.yaml
yaml文件工具类。
wordmarker.utils.file
文件、路径工具类。
Submodules¶
wordmarker.utils.file module¶
- class PathUtils(src, tgt)[源代码]¶
基类:
wordmarker.contexts.system_context.SystemContext
路径工具类