1. 首页
  2. Python

写了一个流式处理数据的pip包

现在的工作大部分时间在和数据打交道,最主要的是csv文件和mysql数据库。python自带的csv和mysql-connector用起来总觉得有点罗嗦,不够简洁,于是决定自己写一个包专门处理这些数据。

这个包实现的功能如下:

  1. 实现类似管道的效果,从数据源获取数据,进行筛选、计算等,向目标写入数据。
  2. 方便增加中间件,比如筛选的条件,计算的方法等。

在写之前搜索了一下,在github找到一个别人已经实现的库(github.com/sandabuliu/p),但这个库是python2的,没有发到pip安装使用并不方便,作者也很久没有维护了,于是读了一下代码,写了我的版本,发到了pypi上。

file-stream​pypi.org图标

项目效果:

# 按行读取csv
from file_stream.source import CsvReader
 
reader = CsvReader('csvfile.csv', delimiter='t', encoding='gbk')
for row in reader:
    print(row)

# 写数据到csv
from file_stream.source import Memory
from file_stream.writer import CsvWriter

datas = [{'f_name': 'tom'},
             {'f_name': 'tim'},
             {'f_name': 'jim'},
             {'f_name': 'pim'}, ]
reader = Memory(datas)
p = reader | CsvWriter('csvfile.csv', ['f_name'])
p.output()

# 从csv统计Mode列为1的数据。
from file_stream.source import CsvReader
from file_stream.filter import Filter

def tell_func(row):
    #判断的函数
    if int(row['Mode']) == 1:
        return True
    else:
        return False

reader = CsvReader(fpath, delimiter=delimiter, encoding=encoding)
filt = Filter(tell_func)
p = reader | filt
codes = set()
for row in p:
    codes.add(row)
return codes

# 整合目录下所有的csv文件到一个新文件。
from file_stream.source import Dir, CsvReader
from file_stream.writer import CsvWriter

p = Dir('tmp', ['csv', 'CSV']) | CsvReader() | CsvWriter('output/output.csv', p.fieldnames)
p.output()

目前实现的组件:

  1. 数据源:文件目录读取所有的文件; csv文件;Mysql数据库。
  2. 过滤:按函数及函数的组合进行过滤。
  3. 写数据:向屏幕写数据,向csv写数据,向mysql写数据。

项目还在持续开发中,开发的过程也会在知乎记录,算是自我学习。

欢迎使用和提出建议。

本文来自投稿,不代表程序员编程网立场,如若转载,请注明出处:http://www.cxybcw.com/185988.html

联系我们

13687733322

在线咨询:点击这里给我发消息

邮件:1877088071@qq.com

工作时间:周一至周五,9:30-18:30,节假日休息

QR code