Skip to main content

jk.zhou's datawork

Project description

pydatawork content summary:

  • basic functions
  • data processing
  • data analysis

pydatawork社区

https://support.qq.com/products/615375/

roadmap

https://trello.com/b/oGOjATiO/datawork-roadmap

pydatawork测试环境:python 3.7.2

pydatawork中所用到的库:

import os
import shutil
import re
import datetime
import random
import time
import math
import json

Basic Functions

rename_by_re() 通过正则表达式匹配实现文件重命名或批量重命名——先匹配,再用关键词替换匹配部分 (v 0.17.5.3)

Sat Jul 8 21:29:29 CST 2023

def rename_by_re(path: str, pattern: str, keyword: str):
    """
    功能:按正则表达式匹配进行文件重命名或批量重命名。(先通过正则表达式匹配要替换的部分,再进行关键词替换。注意:pattern参数也可当普通参数使用,用于匹配一个具体的词。)

    参数:

    path:一个路径,可以是文件路径或文件夹路径(文件夹中的子文件夹不处理)。

    pattern:正则表达式匹配模式。如可用pattern = "[\u4e00-\u9fa5]+"匹配文件名中的全部中文字符;可用pattern = "呼呼"匹配文件名中的“呼呼”这两个具体的字符。

    keyword:用于替换的关键词。
    """

使用示例1:匹配某一类全部字符串。(将 呼呼hhh-积极一回81871.jpg 中的中文替换成zzz。)

import pydatawork as dw

path = r"/home/jkzhou/Desktop/pydatawork/test_data/rename_by_re"
pattern = "[\u4e00-\u9fa5]+" # 匹配文件名中的全部中文字符
keyword = "zzz"

dw.rename_by_re(path,pattern,keyword)

输出结果:

renaming: 呼呼hhh-积极一回81871.jpg to zzzhhh-zzz81871.jpg

使用示例2:匹配某个具体字符串。(将 呼呼hhh-积极一回81871.jpg 中的“呼呼”替换成zzz。)

import pydatawork as dw

path = r"/home/jkzhou/Desktop/pydatawork/test_data/rename_by_re"
pattern = "呼呼" # 精准匹配关键词“呼呼”
keyword = "zzz"

dw.rename_by_re(path,pattern,keyword)

输出结果:

renaming: 呼呼hhh-积极一回81871.jpg to zzzhhh-积极一回81871.jpg

rename_by_insert_keyword() 在文件名的指定位置插入关键词(默认为当前时间戳),实现重命名或批量重命名 (v 0.17.4.4)

Fri Jul 7 16:06:42 CST 2023

def rename_by_insert_keyword(path, index:int=-1,keyword:str=datetime.datetime.now().strftime("%Y-%m-%d_%H-%M-%S")):
    """
    功能:在文件名的指定位置插入关键词,进行文件重命名或批量重命名。需要给定一个路径(文件或文件夹),给定一个位置索引(从0开始),给定一个关键词(字符串),程序会对其中的文件(忽略子文件夹)进行重命名或批量重命名,命名方式为:把keyword添加到原文件名的指定位置。index和keyword有默认值,默认在文件名的后缀插入当前时间戳。

    参数:

    path:一个路径(文件或文件夹)。

    index:一个位置索引(从0开始。前缀位置索引为0,后缀位置索引为-1)。默认为-1。
    
    keyword:一个关键词(字符串)。默认为当前时间戳(格式为:2023-07-07_18-17-13)。
    """

file_split() 文件分割:按指定数量对文件夹中的文件进行拆分 (v 0.17.3.0)

Mon Jul 3 21:21:23 CST 2023

def file_split():
    """
    功能:对文件夹中的文件按指定数量进行拆分。(会忽略文件夹,只处理文件)。如,文件夹中有1000张图片,可将其拆分为10个小文件夹,每个文件夹100张图片,文件夹编号为1-10。

    参数:无需提前输入参数,执行后,根据终端中的提示进行输入。

    path = input("请输入原始文件路径:")  # 输入待分割的原始文件所在路径。

    folderPath = input("请输入要输出的路径:")  # 输入分割后的结果存放路径。

    number = int(input("请输入每个文件夹中文件数:"))  # 每个文件夹中的文件数。
    """

move_files_by_keyword() 按文件名中关键词移动文件,灵活提取文件 (v 0.17.1.2)

Sun Jul 2 24:35:12 CST 2023

def move_files_by_keyword(raw_data_path,working_path):
    """
    功能:根据文件名中的关键词移动文件。

    参数:

    raw_data_path:原始数据所在路径。(不会移动子文件夹,也不会遍历子文件夹)。

    working_path:工作路径,提取出来的文件将存放到该路径。

    keyword(不是参数):指文件名中包含的关键词,不是参数,程序运行后,在命令行中根据提示按需输入。
    """

copy_files_by_keyword() 按文件名中关键词复制文件,灵活提取文件 (v 0.17.1.2)

Sun Jul 2 24:28:40 CST 2023

def copy_files_by_keyword(raw_data_path,working_path):
    """
    功能:根据文件名中的关键词复制文件。

    参数:

    raw_data_path:原始数据所在路径。(不会复制子文件夹,也不会遍历子文件夹)。
    
    working_path:工作路径,提取出来的文件将存放到该路径。

    keyword(不是参数):指文件名中包含的关键词,不是参数,程序运行后,在命令行中根据提示按需输入。
    """

使用示例:

import pydatawork as dw

raw_data_path = r"/home/test_data/copy_files_by_keyword/data"
working_path = r"/home/test_data/copy_files_by_keyword/working"

dw.copy_files_by_keyword(raw_data_path,working_path)

输出结果:

请输入要复制的文件包含的关键词:
11
找到名称中包括 11 的文件
copying: 111.zip to /home/test_data/copy_files_by_keyword/working/11
名称中包括 11 的文件已提取(复制)完毕

get_current_folder_name() 给定一个路径,返回当前文件夹名 (v 0.1.26)

Mon Jun 26 24:23:48 CST 2023

def get_current_folder_name(path):
    """
    功能:输入一个路径,返回当前文件夹名。

    参数:

    path:一个路径,可以是文件夹路径,也可以是文件路径。
    """

get_file_name() 给定一个路径,返回文件名 (v 0.1.32)

Mon Jun 26 24:24:45 CST 2023

def get_file_name(path):
    """
    功能:输入一个路径,返回文件名。(当path为文件夹路径,返回的值为空值。)

    参数:

    path:一个路径,可以是文件夹路径,也可以是文件路径。
    """

copy_files() 复制当前文件夹中(不包括子文件夹)指定类型的文件 (v 0.1.23)

Sun Jun 25 06:19:50 CST 2023

def copy_files(folder_path, target_folder, file_type_list):
    """
    功能:将待整理文件夹中(不包括子文件夹)指定类型的文件复制到目标文件夹。

    参数:

    folder_path:待整理文件夹。

    target_folder:目标文件夹。

    file_type_list:一个列表,里面存放需要复制的文件类别的后缀类型,如[".jpg",".zip",".png",".gz",".whl",".md"],注意,要带点“.”。其中“.gz”表示“.tar.gz”这一类。
    """

move_files() 移动当前文件夹中(不包括子文件夹)指定类型的文件 (v 0.1.23)

Sun Jun 25 06:17:26 CST 2023

def move_files(folder_path, target_folder, file_type_list):
    """
    功能:将待整理文件夹中(不包括子文件夹)指定类型的文件移动到目标文件夹。

    参数:

    folder_path:待整理文件夹。

    target_folder:目标文件夹。

    file_type_list:一个列表,里面存放需要移动的文件类别的后缀类型,如[".jpg",".zip",".png",".gz",".whl",".md"],注意,要带点“.”。其中“.gz”表示“.tar.gz”这一类。
    """

copy_all_files() 复制文件夹及子文件夹下指定类型的全部文件 (v 0.1.22)

Sun Jun 25 06:05:29 CST 2023

def copy_all_files(folder_path, target_folder, file_type_list):
    """
    功能:将待整理文件夹及其子文件夹中指定类型的全部文件复制到目标文件夹。

    参数:

    folder_path:待整理文件夹,可包含多层级子文件夹。

    target_folder:目标文件夹。

    file_type_list:一个列表,里面存放需要复制的文件类别的后缀类型,如[".jpg",".zip",".png",".gz",".whl",".md"],注意,要带点“.”。其中“.gz”表示“.tar.gz”这一类。
    """

move_all_files() 移动文件夹及子文件夹下指定类型的全部文件 (v 0.1.22)

Sun Jun 25 05:01:22 CST 2023

def move_all_files(folder_path, target_folder, file_type_list):
    """
    功能:将待整理文件夹及其子文件夹中指定类型的全部文件移动到目标文件夹。

    参数:

    folder_path:待整理文件夹,可包含多层级子文件夹。

    target_folder:目标文件夹。

    file_type_list:一个列表,里面存放需要移动的文件类别的后缀类型,如[".jpg",".zip",".png",".gz",".whl",".md"],注意,要带点“.”。其中“.gz”表示“.tar.gz”这一类。
    """

示例:

import pydatawork as dw 

folder_path = "/home/jkzhou/Desktop/pydatawork/test_data/move_all_files/folder_path"
target_folder = "/home/jkzhou/Desktop/pydatawork/test_data/move_all_files/target_folder"
file_type_list = [".jpg",".zip",".png",".gz",".whl",".md"]

dw.move_all_files(folder_path,target_folder,file_type_list)

rename_folder_numeric_serialize() 文件夹从左到右比较,按数值从小到大排序,再从1开始进行序列化重命名(v 0.1.6)

Sun Jun 18 22:37:01 CST 2023

def rename_folder_numeric_serialize(path):
    """
    功能:给定一个文件夹路径,获取其中子文件夹的名字,根据子文件夹的名字,从左到右进行比较,按数值从小到大对子文件夹排序,再从1开始对子文件夹进行序列化重命名。

    参数:

    path:文件夹路径。
    """

Data Processing

md_swap_timestamp_and_text() 调换md文档中每个时间戳与其前一行内容的位置 (v 0.17.6.2)

Thu Aug 31 23:11:00 CST 2023

def md_swap_timestamp_and_text(raw_path):
    """
    功能:给定一个md文档,调换文档中每个时间戳与其前一行的位置。(时间戳格式为2023.8.31 20:20:01 或 2023-08-31 20:20:01)

    参数:

    raw_path:文件路径。可以是存放md的文件夹路径,也可以是单个md文件路径。如果输入文件夹路径,将会处理文件夹中全部md文档(不遍历子文件夹)。
    """

obsidian_bookmarks_merge_and_deduplicate() obsidian中surfing插件产生的书签整理:先合并,再去重 (v 0.1.31)

Mon Jun 26 22:50:45 CST 2023

def obsidian_bookmarks_merge_and_deduplicate(original_bookmarks_path,result_path):
    """
    功能:用于处理surfing插件产生的bookmarks。先合并多个bookmarks(只有1个也能正常使用),再对合并后的bookmarks去重,最后得到一个最全、不重复的bookmarks。

    参数:

    original_bookmarks_path:一个路径,路径下存放bookmarks文件,json格式,可以是1个或多个json文件。

    result_path:一个路径,用于存放最终结果。
    """

obsidian_move_md_or_canvas_linked_images() 提取obsidian中.md文档、.canvas文档中链接的图片,实现附件管理、库空间管理、笔记归档 (v 0.1.24)

Sat Jun 24 18:37:16 CST 2023

def obsidian_move_md_or_canvas_linked_images(images_path,folder_path,target_folder):
    """
    功能:指定相关路径,提取obsidian中.md文档、.canvas文档中链接的图片,实现附件管理、库空间管理、笔记归档。

    参数:

    images_path:图片附件所在的文件夹。通常是笔记库的附件文件夹。

    folder_path:待整理的md、canvas文档所在文件夹(可包括多层级子文件夹,会遍历)。通常临时建立一个文件夹,将待整理的笔记存进去。

    target_folder:提前准备的文件夹,可以建在任意位置,用于存放提取出来的图片。
    """

示例及说明:在自己的代码中提前准备好三个路径,然后调用函数

import pydatawork as dw 

images_path = "/home/jkzhou/Desktop/手机笔记同步-附件"
folder_path = "/home/jkzhou/Desktop/file"
target_folder = "/home/jkzhou/Desktop/file/附件"

dw.obsidian_move_md_or_canvas_linked_images(images_path,folder_path,target_folder)

Data Analysis

game_number_guessing() 猜数字游戏:自定义数字的范围,输入自己猜的数字,并根据计算机的提示调整,直至猜对 (v 0.1.37)

Sat Jul 1 01:42:58 CST 2023

def game_number_guessing(number=100):
    """
    游戏规则:指定一个整数,确定数字的范围;根据提示猜数字,直到猜中。

    参数:

    number:大于1的整数,默认为100,指要猜的数字在100以内。

    用法1:若不设定参数,可以写成 game_number_guessing() ,这时默认值为100。

    用法2:自定义参数,可以写成 game_number_guessing(number=200),这时,数字范围设定为在200以内。
    """

使用示例1:

import pydatawork as dw

dw.game_number_guessing(number=200) # 将数字范围调整成200

使用示例2:

import pydatawork as dw

dw.game_number_guessing() # 使用默认值100

get_BMI() 输入身高(m)、体重(kg),进行身体质量指数(BMI)测量,了解当前身体健康状态,获得体重管理建议 (V 0.1.36)

Fri Jun 30 19:50:03 CST 2023

def get_BMI(height,weight):
    """
    功能:用于BMI测量。BMI(身体质量指数)是一种计算一个人体重是否健康的方法,基于身高和体重的比例来计算。如果 bmi 小于 18.5,说明体重过轻;如果 bmi 在 18.5 和 24.9 之间说明体重在正常范围;如果 bmi 在 24.9 和 29.9 之间说明体重过重;如果大于 29.9 说明肥胖。

    参数:

    height:身高(m)(注意,单位为米)。

    weight:体重(kg)(注意,单位为千克)。
    """

使用示例1:

import pydatawork as dw

dw.get_BMI(height=1.75,weight=73) # 调用函数,通过关键词参数输入值

使用示例2:

import pydatawork as dw

height = float(1.75)
weight = float(73)

dw.get_BMI(height,weight)

测量结果示例:

本次BMI测量时间:2023.06.30 20:20:34
身高: 1.75 m
体重: 73.0 kg
BMI(身体质量指数):23.84
当前BMI健康状态评价:体重在正常范围
正常体重范围:建议体重保持在 56.66 kg 至 76.26 kg 之间
(注意:男女有别,请结合自身实际情况判断自己的体重状态)

about pydatawork

hello() 探索(v 0.1.7)

Sun Jun 18 23:34:45 CST 2023

def hello():
    """
    探索pydatawork。
    """

pypi维护工具安装(windows)

pip install twine # 安装核心工具
pip install --upgrade setuptools wheel twine # 升级和下载相关工具

pypi维护指令

cd 到pydatawork文件夹
python3 setup.py sdist bdist_wheel # 打包
twine check dist/* # 检查
twine upload dist/* # 上传,需要输入帐号密码

查看pydatawork是否有更新

pip3 list --outdated

pydatawork升级方法(先卸载,再安装)

# 卸载指令
pip3 uninstall pydatawork  
pip uninstall pydatawork 

# 安装指令
pip3 install pydatawork  
pip install pydatawork 

pydatawork 导入方式

import pydatawork # 标准导入方式
import pydatawork as dw # 推荐使用此方式,更简洁

pydatawork安装

# 安装指令
pip3 install pydatawork  
pip install pydatawork

关于pydatawork

数据工作相关的分享、梳理,主要目的是辅助个人开展数据处理、数据分析工作。

推荐始终使用最新版。

要升级使用最新的安装包,比较稳定可靠的一种方式是,先卸载旧的,再重装。

发布时间:Thu Jun 15 13:23:43 CST 2023

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 Distribution

pydatawork-0.17.7.3.tar.gz (24.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

pydatawork-0.17.7.3-py3-none-any.whl (22.5 kB view details)

Uploaded Python 3

File details

Details for the file pydatawork-0.17.7.3.tar.gz.

File metadata

  • Download URL: pydatawork-0.17.7.3.tar.gz
  • Upload date:
  • Size: 24.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.11.5

File hashes

Hashes for pydatawork-0.17.7.3.tar.gz
Algorithm Hash digest
SHA256 1bdf12895194c877764449afd84f6b6995c10637bc728f28ec6b39530952f186
MD5 b0543989d21b9b68cb8669fb9af00e85
BLAKE2b-256 eaaac7c76b05193db48c74cb1d11be6d430efcb7ecbaf153d50e8adb853a5ea4

See more details on using hashes here.

File details

Details for the file pydatawork-0.17.7.3-py3-none-any.whl.

File metadata

  • Download URL: pydatawork-0.17.7.3-py3-none-any.whl
  • Upload date:
  • Size: 22.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.11.5

File hashes

Hashes for pydatawork-0.17.7.3-py3-none-any.whl
Algorithm Hash digest
SHA256 23d12b9247271f83bb41a0e0e521134d697d274b041db0f5771c75daff3b70e6
MD5 4443c85bebcb500734ece557273441d9
BLAKE2b-256 6012ea951e4217771220ac9b5073cbec1ca6c672fb83cc2caa3369640827071e

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page