fishbase 1.6
some useful functions for python
License: MIT


.. image:: https://travis-ci.org/chinapnr/fishbase.svg?branch=master
    :target: https://travis-ci.org/chinapnr/fishbase
.. image:: https://coveralls.io/repos/github/chinapnr/fishbase/badge.svg?branch=master
    :target: https://coveralls.io/github/chinapnr/fishbase?branch=master
.. image:: https://readthedocs.org/projects/fishbase/badge/?version=latest
    :target: https://fishbase.readthedocs.io/en/latest/?badge=latest
.. image:: https://ci.appveyor.com/api/projects/status/ecskod12wy8fvkxu?svg=true
    :target: https://ci.appveyor.com/project/itaa/fishbase


fishbase 简介
=================

fishbase 是由我们开发和整理的一套 Python基础函数库，将我们平时在开发 Python项目时候的各类工具函数汇聚到一起，方便集中管理和使用。希望对你也有所帮助，也适合初学 Python 的朋友通过代码来学习。

fishbase 最新版本为 v1.6，支持 Python 3.5-3.10，绝大部分函数也能工作在 Python 2.7下，但是我们不推荐使用 Python 2.7。

fishbase 主要有以下功能模块：

+-------------------------------------------------------------------------------+--------------------------------------+
|                                     模块                                      |               功能函数               |
+===============================================================================+======================================+
| `fish_common <https://fishbase.readthedocs.io/en/latest/fish_common.html>`_   | 基本函数包                           |
+-------------------------------------------------------------------------------+--------------------------------------+
| `fish_crypt <https://fishbase.readthedocs.io/en/latest/fish_crypt.html>`_     | 加密数据函数包                       |
+-------------------------------------------------------------------------------+--------------------------------------+
| `fish_csv <https://fishbase.readthedocs.io/en/latest/fish_csv.html>`_         | csv处理增强函数包                    |
+-------------------------------------------------------------------------------+--------------------------------------+
| `fish_data <https://fishbase.readthedocs.io/en/latest/fish_data.html>`_       | 数据处理函数包，包括银行卡、身份证等 |
+-------------------------------------------------------------------------------+--------------------------------------+
| `fish_date <https://fishbase.readthedocs.io/en/latest/fish_date.html>`_       | 日期处理增强函数包                   |
+-------------------------------------------------------------------------------+--------------------------------------+
| `fish_file <https://fishbase.readthedocs.io/en/latest/fish_file.html>`_       | 文件处理增强函数包                   |
+-------------------------------------------------------------------------------+--------------------------------------+
| `fish_logger <https://fishbase.readthedocs.io/en/latest/fish_logger.html>`_   | 日志记录增强函数包                   |
+-------------------------------------------------------------------------------+--------------------------------------+
| `fish_project <https://fishbase.readthedocs.io/en/latest/fish_project.html>`_ | 项目目录结构生成函数包               |
+-------------------------------------------------------------------------------+--------------------------------------+
| `fish_random <https://fishbase.readthedocs.io/en/latest/fish_random.html>`_   | 随机数据生成增强函数包               |
+-------------------------------------------------------------------------------+--------------------------------------+
| `fish_system <https://fishbase.readthedocs.io/en/latest/fish_system.html>`_   | 系统增强函数包                       |
+-------------------------------------------------------------------------------+--------------------------------------+


安装
=====

.. code:: shell

   # 通过 pip 进行安装或者更新
   pip install -U fishbase


fishbase 功能举例
===================

获取文件的绝对路径
------------------------------

.. code:: python

   >>> from fishbase.fish_files import get_abs_filename_with_sub_path
   >>> print(get_abs_filename_with_sub_path('/etc', 'hosts'))
   (True, '/etc/hosts')


根据时间戳获取时间间隔
------------------------------

.. code:: python

   >>> from fishbase.fish_date import get_time_interval
   >>> print(get_time_interval(1548575829,1548476921))
   {'days': 1, 'hours': 3, 'minutes': 28, 'seconds': 28}


生成随机符合校验规则的身份证和银行卡数据
--------------------------------------------------

.. code:: python

   >>> from fishbase.fish_random import gen_random_id_card
   >>> # 随机生成一个身份证号
   >>> print(gen_random_id_card())
   ['3101091986******47']
   >>> from fishbase.fish_random import gen_random_bank_card
   >>> # 随机生成一个中国银行的信用卡卡号
   >>> print(gen_random_bank_card('中国银行', 'CC'))
   625907379******1


创建项目结构
--------------------

.. code:: python

   >>> import os
   >>> from fishbase.fish_project import init_project_by_yml
   >>> package_yml = '''
   ... project: hellopackage
   ... tree:
   ...     - README.md
   ...     - requirements.txt
   ...     - setup.py
   ... '''
   >>> # 通过 yml 文件创建一个项目结构
   >>> init_project_by_yml(package_yml, '.')
   >>> print(os.listdir('./hellopackage'))
   ['requirements.txt', 'README.md', 'setup.py']


更新记录
==========

2022.9.13 v1.6
------------------
- `#303 <https://github.com/chinapnr/fishbase/issues/303>`_ , update setup.py, add install_requires `chardet`
- `#302 <https://github.com/chinapnr/fishbase/pull/302>`_ , update fish_common.py, modify yaml load method.

2021.7.20 v1.5
------------------
- `#300 <https://github.com/chinapnr/fishbase/issues/300>`_ , fish_logger 中的 log 文件默认后缀修改为 .log，日期移到文件名开头;
- 修改文档描述

2021.6.23 v1.4
------------------
- `#288 <https://github.com/chinapnr/fishbase/issues/288>`_ , fish_date 中的 GetRandomTime 修改为 RandomTime，其中函数名称修改为 get_random_datetime_this_month() get_random_datetime_this_year() get_random_date_by_year() get_random_date_by_range();
- `#292 <https://github.com/chinapnr/fishbase/issues/292>`_ , fish_data 增加敏感数据掩码显示类 SensitiveMask，增加函数 get_idcard_number() get_bankcard_number() get_mobile_number() get_email() ;
- 修改小错误
- 修改文档描述

2020.4.25 v1.3
------------------
- `#273 <https://github.com/chinapnr/fishbase/issues/273>`_ , 随机数包的文档举例中的函数名称错误修正;
- `#275 <https://github.com/chinapnr/fishbase/issues/275>`_ , 随机数，gen_random_id_card() 函数优化;

2020.3.28 v1.2
------------------
- `#255 <https://github.com/chinapnr/fishbase/issues/255>`_ `#266 <https://github.com/chinapnr/fishbase/issues/266>`_ , 开始使用 github 的 Actions 进行 CI 集成;
- `#257 <https://github.com/chinapnr/fishbase/issues/257>`_ , conf_as_dict() 函数移动从 common 包移动到 system 包;
- `#259 <https://github.com/chinapnr/fishbase/issues/259>`_ , 增加 fish_object 函数包，面向对象增强函数;
- `#260 <https://github.com/chinapnr/fishbase/issues/260>`_ , common 包，删除 sorted_objs_by_attr() 函数和 get_group_list_data() 函数;
- `#261 <https://github.com/chinapnr/fishbase/issues/261>`_ , common 包，paging 函数名称修改为 get_page_data();
- `#263 <https://github.com/chinapnr/fishbase/issues/263>`_ , common 包，删除一些为了向前兼容的函数;
- `#263 <https://github.com/chinapnr/fishbase/issues/263>`_ , 删除 flask swagger 支持;

2019.12.5 v1.1.16
------------------
- 为 flask应用添加 swagger模块 `#249 <https://github.com/chinapnr/fishbase/issues/249>`_

2019.7.17 v1.1.15
------------------

- 添加可选参数，定义日志文件格式 `#240 <https://github.com/chinapnr/fishbase/issues/240>`_
- 根据银行卡、身份证获取详细信息的方法 `#243 <https://github.com/chinapnr/fishbase/issues/243>`_

2019.6.25 v1.1.14
------------------

- 修复金额数字转中文大写时多个零的错误 `#238 <https://github.com/chinapnr/fishbase/issues/238>`_
- 按照特定长度分割长文本字符 `#239 <https://github.com/chinapnr/fishbase/issues/239>`_

2019.6.11 v1.1.13
------------------
- 数字金额和中文大写相互转换 `#235 <https://github.com/chinapnr/fishbase/issues/235>`_


详细帮助
==========

更多详细文档，请参见：http://fishbase.readthedocs.io/

如有好的建议，欢迎提 issue ：https://github.com/chinapnr/fishbase/issues


感谢
====

自2016年3月初次发布以来，先后发布了20余个版本，非常感谢所有在 fishbase函数包发展过程中做出贡献的朋友们！

fishbase函数包的作者名单，按照时间先后列出如下：

Yi Jun

Leo

Zhang Muqing

Hu Jun

Jia Chunying

Yan Runsha

Miao Tianshi

Jin Xiongwei

Wang Xiaolong