Data File Elf
Project description
dfelf
由于日常工作需要(有时候还有写blog的需要),总是要处理一些数据文件,很多繁琐的工作希望可以有一个文件精灵来帮我处理,所以就把过去写的小工具重新整理下,形成“数据文件精灵”(“dfelf”)。
“dfelf”为“Data File Elf”的缩写。
因为日常总是需要处理如下文件:
- CSV
- 图片
所以数据文件精灵初步设计可以支持以上三类文件的日常处理需要。
安装
pip install --upgrade dfelf
在macOS下,如果要pdf2image运行正常,需要安装Poppler
conda install -c conda-forge poppler
PDFFileElf
PDF文件精灵用于日常对pdf文件的处理应用。相关方法如下:
- reorganize:抽取PDF文件中相关页重新排列组合成一个新的PDF文件;对应的配置设定为reorganize。
- image2pdf:将图片文件拼接成一个PDF文件,每个图片为一页;对应的配置设定为image2pdf。
- to_image:将PDF文件相关页输出成图片,每一页为一个图片,以页码为文件后续;对应的配置设定为2image。
配置文件设定如下:
{
'reorganize': {
'input': 'input_filename',
'output': 'output_filename',
'pages': [1]
},
'image2pdf': {
'images': [],
'output': 'output_filename'
},
'2image': {
'input': 'input_filename',
'output': 'output_filename_prefix',
'format': 'png',
'dpi': 200,
'pages': [1]
}
}
CSVFileElf
CSV文件精灵用于日常对csv文件的处理应用。相关方法如下:
- add:将tags下定义的csv文件,按照key进行匹配,补充相关字段到base的csv文件中;对应的配置设定为add。
- join:将files下定义的csv文件,拼接到base的csv文件中;对应的配置设定为join。
- exclude:根据exclusion下定义的条件(op支持的操作有:'=', '!=', '>', '>=', '<=', '<'),对input的csv文件内容进行剔除处理;对应的配置设定为exclude。
- filter:根据filters下定义的条件(op支持的操作有:'=', '!=', '>', '>=', '<=', '<'),对input的csv文件内容进行筛选处理;对应的配置设定为filter。
- split:根据key对input的csv文件进行拆解处理;对应的配置设定为split。
配置文件设定如下:
{
'add': {
'base': {
'name': 'base_filename',
'key': 'key_field',
'drop_duplicates': False,
},
'output': {
'name': 'output_filename',
'BOM': False,
'non-numeric': []
},
'tags': [
{
'name': 'base_filename',
'key': 'key_field',
'fields': ['field A', 'field B'],
'defaults': ['default value of field A', 'default value of field B']
}
]
},
'join': {
'base': 'base_filename',
'output': {
'name': 'output_filename',
'BOM': False,
'non-numeric': []
},
'files': [
{
'name': 'filename',
'mappings': {}
}
]
},
'exclude': {
'input': 'input_filename',
'exclusion': [
{
'key': 'field',
'op': '=',
'value': 123
}
],
'output': {
'name': 'output_filename',
'BOM': False,
'non-numeric': []
}
},
'filter': {
'input': 'input_filename',
'filters': [
{
'key': 'field',
'op': '=',
'value': 123
}
],
'output': {
'name': 'output_filename',
'BOM': False,
'non-numeric': []
}
},
'split': {
'input': 'input_filename',
'output': {
'prefix': 'output_filename_prefix',
'BOM': False,
'non-numeric': []
},
'key': 'key_field'
}
}
对于输出output配置,如果需要输出BOM格式,请把BOM设置为True;若有一些字段需要表达为非数字类字段,以便于在Excel中打开处理的话,请在non-numeric中设置需要处理的相关字段。
ImageFileElf
Image文件精灵用于日常对图片类文件的处理应用。相关方法如下:
- to_favicon:把图片转化为favicon;对应的配置设定为favicon。
- splice:将images中的文件拼接为一张图片;对应的配置设定为splice。
- watermark:在指定的x、y坐标中增加水印文字;对应的配置设定为watermark。
- qrcode:将input的字符串生成二维码;对应的配置设定为qrcode。
- decode_qrcode:将input的二维码图片解析成字符串,并返回;对应的配置设定为dqrcode。
- to_base64:将input的图片转化为base64字符串,并返回;对应的配置设定为2base64。
- from_base64:将input的base64字符串转化为图片;对应的配置设定为base64。
- resize:将input的图片调整尺寸后输出到output;对应的配置设定为resize。
配置文件设定如下:
{
'favicon': {
'size': -1,
'input': 'input_filename'
},
'splice': {
'output': 'output_filename',
'images': [],
'width': 700,
'gap': 5
},
'watermark': {
'input': 'input_filename',
'output': 'output_filename',
'text': 'Krix.Tam',
'color': 'FFFFFF',
'font': 'arial.ttf',
'font_size': 24,
'x': 5,
'y': 5,
'alpha': 50
},
'2base64': {
'input': 'input_filename',
'css_format': False
},
'base64': {
'input': 'base64 string',
'output': 'output_filename'
},
'qrcode': {
'input': 'string',
'output': 'output_filename',
'border': 2,
'fill_color': "#000000",
'back_color': "#FFFFFF"
},
'dqrcode': {
'input': 'input_filename'
},
'resize': {
'input': 'input_filename',
'output': 'output_filename',
'scale': False,
'width': 28,
'height': 28,
'quality': 100,
'dpi': 1200
}
}
示例
import os
from dfelf import CSVFileElf
df_elf = CSVFileElf()
config = {
'base': {
'name': os.path.join('sources', 'df1.csv'),
'key': 'key'
},
'output': {
'name': 'test_add.csv'
},
'tags': [
{
'name': os.path.join('sources', 'df3.csv'),
'key': 'key',
'fields': ['new_value'],
'defaults': ['0.0']
}
]
}
df_elf.add(**config)
下面的代码在v0.1.0版本开始,可以获得与上面代码同样的结果:
import os
import pandas as pd
from dfelf import CSVFileElf
df_elf = CSVFileElf()
config = {
'base': {
'key': 'key'
},
'output': {
'name': 'test_add.csv'
},
'tags': [
{
'name': os.path.join('sources', 'df3.csv'),
'key': 'key',
'fields': ['new_value'],
'defaults': ['0.0']
}
]
}
input_df = pd.read_csv(os.path.join('sources', 'df1.csv'), dtype=str)
df_elf.add(input_df, **config)
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distributions
No source distribution files available for this release.See tutorial on generating distribution archives.
Built Distribution
dfelf-0.1.2-py3-none-any.whl
(7.4 MB
view details)
File details
Details for the file dfelf-0.1.2-py3-none-any.whl
.
File metadata
- Download URL: dfelf-0.1.2-py3-none-any.whl
- Upload date:
- Size: 7.4 MB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.4.2 importlib_metadata/4.6.3 pkginfo/1.7.1 requests/2.27.1 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.9.5
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 68b46569adf33d3d45c9b940bec1bad61b42c788814e2719320c20b91681b05c |
|
MD5 | 4fb6b07be7d2fe706808c3b62ce5be4b |
|
BLAKE2b-256 | 366ab386a18fbfbd1b52968bc34c7d138b011593fa320c52aee6d6482be32945 |