summaryrefslogtreecommitdiff
path: root/python-datarecorder.spec
blob: e6c607e317617989dd4719ba4cffe55d67bc929d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
%global _empty_manifest_terminate_build 0
Name:		python-DataRecorder
Version:	3.3.2
Release:	1
Summary:	用于记录数据的模块。
License:	MIT
URL:		https://gitee.com/g1879/DataRecorder
Source0:	https://mirrors.aliyun.com/pypi/web/packages/92/71/ab5e864abacbdf7fe9c06afb31809a4878899d57ec7d92184a2c5d0cf456/DataRecorder-3.3.2.tar.gz
BuildArch:	noarch

Requires:	python3-openpyxl

%description
# ⭐️简介

本库是一个基于 python 的工具集,用于记录数据到文件(含 sqlite)。

使用方便,代码简洁, 是一个可靠、省心且实用的工具。

还支持多线程同时写入文件。

**交流QQ群:** 897838127

**联系邮箱:** g1879@qq.com

**使用手册:** 📒[点击打开](http://g1879.gitee.io/datarecorder)

# ✨️理念

简单,可靠,省心。

# 📕背景

进行数据采集的时候,常常要保存数据到文件,频繁开关文件会影响效率,而如果等采集结束再写入,会有因异常而丢失数据的风险。

因此写了这些工具,只要把数据扔进去,它们能缓存到一定数量再一次写入,减少文件开关次数,而且在程序崩溃或退出时能自动保存,保证数据的可靠。

它们使用非常方便,无论何时何地,无论什么格式,只要使用`add_data()`方法把数据存进去即可,语法极其简明扼要,使程序员能更专注业务逻辑。

它们还相当可靠,作者曾一次过连续记录超过 300 万条数据,也曾 50 个线程同时运行写入数万条数据到一个文件,依然轻松胜任。

工具还对表格文件(xlsx、csv)做了很多优化,封装了实用功能,可以使用表格文件方便地实现断点续爬、批量转移数据、指定坐标填写数据等。

# 🍀特性

- 可以缓存数据到一定数量再一次写入,减少文件读写次数,降低开销。
- 支持多线程同时写入数据。
- 可以在程序崩溃时自动保存,失败时显示剩余数据。
- 写入时如文件打开,会自动等待文件关闭再写入,避免数据丢失。
- 对断点续爬提供良好支持。
- 可方便地批量转移数据。
- 可根据字典数据自动创建表头。
- 自动创建文件和路径,减少代码量。

# 🎇概览

这里简要介绍各种工具用途,详细用法请查看使用方法章节。

## ⚡记录器`Recorder`

`Recorder`是最常用的工具,它的功能简单直观高效实用,只做一个动作,就是不断接收数据,按顺序往文件里添加。可以接收单行数据,或二维数据一次写入多行。

它主要支持 csv、xlsx、json、txt 四种格式文件,当目标文件不是这 4 种之一时,按 txt 的方式记录。

```python
from DataRecorder import Recorder

data = ((1, 2, 3, 4), 
        (5, 6, 7, 8))

r = Recorder('data.csv')
r.add_data(data)  # 一次记录多行数据
r.add_data('abc')  # 记录单行数据
```

## ⚡表格填充器`Filler`

`Filler`用于对表格文件填写数据,可以指定填其坐标。它的使用非常灵活,可以指定坐标为左上角,填入一片二维数据。还封装了记录数据处理进度的功能(比如断点续爬)。除此以外,它还能给单元格设置链接。

它只支持 csv 和 xlsx 格式文件。

```python
from DataRecorder import Filler

f = Filler('results.csv')
f.add_data((1, 2, 3, 4), 'a2')  # 从A2单元格开始,写入一行数据
f.add_data(((1, 2), (3, 4)), 'd4')  # 以D4单元格为左上角,写入一片二维数据
```

## ⚡二进制数据记录器`ByteRecorder`

`ByteRecorder`用法最简单,它和`Recorder`类似,记录多个数据然后按顺序写入文件。不一样的是它只接收二进制数据,每次`add_data()`只能输入一条数据,而且没有行的概念。

可以用来和作者的另一个工具 [FlowViewer](https://gitee.com/g1879/FlowViewer) 配合使用,用来获取浏览器加载的文件,或用来记录下载的文件。可指定每个数据写入文件中的位置,以支持多线程下载文件。

支持任意文件格式。

```python
from DataRecorder import ByteRecorder

b = ByteRecorder('data.file')
b.add_data(b'xxxxxxxxxxx')  # 向文件写入二进制数据
```

## ⚡数据库记录器`DBRecorder`(测试)

3.1 版增加的功能,目前只支持 sqlite,用法和`Recorder`一致,支持自动创建数据库、数据表、数据列。

```python
from DataRecorder import DBRecorder

d = DBRecorder('data.db')
d.add_data({'name': '张三', 'age': 25}, table='user')  # 插入数据到user表
d.record()
```

# 🛠使用方法

[📒点击跳转到使用手册](http://g1879.gitee.io/datarecorder)

# ☕ 请我喝咖啡

如果本项目对您有所帮助,不妨请作者我喝杯咖啡 :)

![](https://gitee.com/g1879/DrissionPage-demos/raw/master/pics/code.jpg)


%package -n python3-DataRecorder
Summary:	用于记录数据的模块。
Provides:	python-DataRecorder
BuildRequires:	python3-devel
BuildRequires:	python3-setuptools
BuildRequires:	python3-pip
%description -n python3-DataRecorder
# ⭐️简介

本库是一个基于 python 的工具集,用于记录数据到文件(含 sqlite)。

使用方便,代码简洁, 是一个可靠、省心且实用的工具。

还支持多线程同时写入文件。

**交流QQ群:** 897838127

**联系邮箱:** g1879@qq.com

**使用手册:** 📒[点击打开](http://g1879.gitee.io/datarecorder)

# ✨️理念

简单,可靠,省心。

# 📕背景

进行数据采集的时候,常常要保存数据到文件,频繁开关文件会影响效率,而如果等采集结束再写入,会有因异常而丢失数据的风险。

因此写了这些工具,只要把数据扔进去,它们能缓存到一定数量再一次写入,减少文件开关次数,而且在程序崩溃或退出时能自动保存,保证数据的可靠。

它们使用非常方便,无论何时何地,无论什么格式,只要使用`add_data()`方法把数据存进去即可,语法极其简明扼要,使程序员能更专注业务逻辑。

它们还相当可靠,作者曾一次过连续记录超过 300 万条数据,也曾 50 个线程同时运行写入数万条数据到一个文件,依然轻松胜任。

工具还对表格文件(xlsx、csv)做了很多优化,封装了实用功能,可以使用表格文件方便地实现断点续爬、批量转移数据、指定坐标填写数据等。

# 🍀特性

- 可以缓存数据到一定数量再一次写入,减少文件读写次数,降低开销。
- 支持多线程同时写入数据。
- 可以在程序崩溃时自动保存,失败时显示剩余数据。
- 写入时如文件打开,会自动等待文件关闭再写入,避免数据丢失。
- 对断点续爬提供良好支持。
- 可方便地批量转移数据。
- 可根据字典数据自动创建表头。
- 自动创建文件和路径,减少代码量。

# 🎇概览

这里简要介绍各种工具用途,详细用法请查看使用方法章节。

## ⚡记录器`Recorder`

`Recorder`是最常用的工具,它的功能简单直观高效实用,只做一个动作,就是不断接收数据,按顺序往文件里添加。可以接收单行数据,或二维数据一次写入多行。

它主要支持 csv、xlsx、json、txt 四种格式文件,当目标文件不是这 4 种之一时,按 txt 的方式记录。

```python
from DataRecorder import Recorder

data = ((1, 2, 3, 4), 
        (5, 6, 7, 8))

r = Recorder('data.csv')
r.add_data(data)  # 一次记录多行数据
r.add_data('abc')  # 记录单行数据
```

## ⚡表格填充器`Filler`

`Filler`用于对表格文件填写数据,可以指定填其坐标。它的使用非常灵活,可以指定坐标为左上角,填入一片二维数据。还封装了记录数据处理进度的功能(比如断点续爬)。除此以外,它还能给单元格设置链接。

它只支持 csv 和 xlsx 格式文件。

```python
from DataRecorder import Filler

f = Filler('results.csv')
f.add_data((1, 2, 3, 4), 'a2')  # 从A2单元格开始,写入一行数据
f.add_data(((1, 2), (3, 4)), 'd4')  # 以D4单元格为左上角,写入一片二维数据
```

## ⚡二进制数据记录器`ByteRecorder`

`ByteRecorder`用法最简单,它和`Recorder`类似,记录多个数据然后按顺序写入文件。不一样的是它只接收二进制数据,每次`add_data()`只能输入一条数据,而且没有行的概念。

可以用来和作者的另一个工具 [FlowViewer](https://gitee.com/g1879/FlowViewer) 配合使用,用来获取浏览器加载的文件,或用来记录下载的文件。可指定每个数据写入文件中的位置,以支持多线程下载文件。

支持任意文件格式。

```python
from DataRecorder import ByteRecorder

b = ByteRecorder('data.file')
b.add_data(b'xxxxxxxxxxx')  # 向文件写入二进制数据
```

## ⚡数据库记录器`DBRecorder`(测试)

3.1 版增加的功能,目前只支持 sqlite,用法和`Recorder`一致,支持自动创建数据库、数据表、数据列。

```python
from DataRecorder import DBRecorder

d = DBRecorder('data.db')
d.add_data({'name': '张三', 'age': 25}, table='user')  # 插入数据到user表
d.record()
```

# 🛠使用方法

[📒点击跳转到使用手册](http://g1879.gitee.io/datarecorder)

# ☕ 请我喝咖啡

如果本项目对您有所帮助,不妨请作者我喝杯咖啡 :)

![](https://gitee.com/g1879/DrissionPage-demos/raw/master/pics/code.jpg)


%package help
Summary:	Development documents and examples for DataRecorder
Provides:	python3-DataRecorder-doc
%description help
# ⭐️简介

本库是一个基于 python 的工具集,用于记录数据到文件(含 sqlite)。

使用方便,代码简洁, 是一个可靠、省心且实用的工具。

还支持多线程同时写入文件。

**交流QQ群:** 897838127

**联系邮箱:** g1879@qq.com

**使用手册:** 📒[点击打开](http://g1879.gitee.io/datarecorder)

# ✨️理念

简单,可靠,省心。

# 📕背景

进行数据采集的时候,常常要保存数据到文件,频繁开关文件会影响效率,而如果等采集结束再写入,会有因异常而丢失数据的风险。

因此写了这些工具,只要把数据扔进去,它们能缓存到一定数量再一次写入,减少文件开关次数,而且在程序崩溃或退出时能自动保存,保证数据的可靠。

它们使用非常方便,无论何时何地,无论什么格式,只要使用`add_data()`方法把数据存进去即可,语法极其简明扼要,使程序员能更专注业务逻辑。

它们还相当可靠,作者曾一次过连续记录超过 300 万条数据,也曾 50 个线程同时运行写入数万条数据到一个文件,依然轻松胜任。

工具还对表格文件(xlsx、csv)做了很多优化,封装了实用功能,可以使用表格文件方便地实现断点续爬、批量转移数据、指定坐标填写数据等。

# 🍀特性

- 可以缓存数据到一定数量再一次写入,减少文件读写次数,降低开销。
- 支持多线程同时写入数据。
- 可以在程序崩溃时自动保存,失败时显示剩余数据。
- 写入时如文件打开,会自动等待文件关闭再写入,避免数据丢失。
- 对断点续爬提供良好支持。
- 可方便地批量转移数据。
- 可根据字典数据自动创建表头。
- 自动创建文件和路径,减少代码量。

# 🎇概览

这里简要介绍各种工具用途,详细用法请查看使用方法章节。

## ⚡记录器`Recorder`

`Recorder`是最常用的工具,它的功能简单直观高效实用,只做一个动作,就是不断接收数据,按顺序往文件里添加。可以接收单行数据,或二维数据一次写入多行。

它主要支持 csv、xlsx、json、txt 四种格式文件,当目标文件不是这 4 种之一时,按 txt 的方式记录。

```python
from DataRecorder import Recorder

data = ((1, 2, 3, 4), 
        (5, 6, 7, 8))

r = Recorder('data.csv')
r.add_data(data)  # 一次记录多行数据
r.add_data('abc')  # 记录单行数据
```

## ⚡表格填充器`Filler`

`Filler`用于对表格文件填写数据,可以指定填其坐标。它的使用非常灵活,可以指定坐标为左上角,填入一片二维数据。还封装了记录数据处理进度的功能(比如断点续爬)。除此以外,它还能给单元格设置链接。

它只支持 csv 和 xlsx 格式文件。

```python
from DataRecorder import Filler

f = Filler('results.csv')
f.add_data((1, 2, 3, 4), 'a2')  # 从A2单元格开始,写入一行数据
f.add_data(((1, 2), (3, 4)), 'd4')  # 以D4单元格为左上角,写入一片二维数据
```

## ⚡二进制数据记录器`ByteRecorder`

`ByteRecorder`用法最简单,它和`Recorder`类似,记录多个数据然后按顺序写入文件。不一样的是它只接收二进制数据,每次`add_data()`只能输入一条数据,而且没有行的概念。

可以用来和作者的另一个工具 [FlowViewer](https://gitee.com/g1879/FlowViewer) 配合使用,用来获取浏览器加载的文件,或用来记录下载的文件。可指定每个数据写入文件中的位置,以支持多线程下载文件。

支持任意文件格式。

```python
from DataRecorder import ByteRecorder

b = ByteRecorder('data.file')
b.add_data(b'xxxxxxxxxxx')  # 向文件写入二进制数据
```

## ⚡数据库记录器`DBRecorder`(测试)

3.1 版增加的功能,目前只支持 sqlite,用法和`Recorder`一致,支持自动创建数据库、数据表、数据列。

```python
from DataRecorder import DBRecorder

d = DBRecorder('data.db')
d.add_data({'name': '张三', 'age': 25}, table='user')  # 插入数据到user表
d.record()
```

# 🛠使用方法

[📒点击跳转到使用手册](http://g1879.gitee.io/datarecorder)

# ☕ 请我喝咖啡

如果本项目对您有所帮助,不妨请作者我喝杯咖啡 :)

![](https://gitee.com/g1879/DrissionPage-demos/raw/master/pics/code.jpg)


%prep
%autosetup -n DataRecorder-3.3.2

%build
%py3_build

%install
%py3_install
install -d -m755 %{buildroot}/%{_pkgdocdir}
if [ -d doc ]; then cp -arf doc %{buildroot}/%{_pkgdocdir}; fi
if [ -d docs ]; then cp -arf docs %{buildroot}/%{_pkgdocdir}; fi
if [ -d example ]; then cp -arf example %{buildroot}/%{_pkgdocdir}; fi
if [ -d examples ]; then cp -arf examples %{buildroot}/%{_pkgdocdir}; fi
pushd %{buildroot}
if [ -d usr/lib ]; then
	find usr/lib -type f -printf "\"/%h/%f\"\n" >> filelist.lst
fi
if [ -d usr/lib64 ]; then
	find usr/lib64 -type f -printf "\"/%h/%f\"\n" >> filelist.lst
fi
if [ -d usr/bin ]; then
	find usr/bin -type f -printf "\"/%h/%f\"\n" >> filelist.lst
fi
if [ -d usr/sbin ]; then
	find usr/sbin -type f -printf "\"/%h/%f\"\n" >> filelist.lst
fi
touch doclist.lst
if [ -d usr/share/man ]; then
	find usr/share/man -type f -printf "\"/%h/%f.gz\"\n" >> doclist.lst
fi
popd
mv %{buildroot}/filelist.lst .
mv %{buildroot}/doclist.lst .

%files -n python3-DataRecorder -f filelist.lst
%dir %{python3_sitelib}/*

%files help -f doclist.lst
%{_docdir}/*

%changelog
* Thu Jun 08 2023 Python_Bot <Python_Bot@openeuler.org> - 3.3.2-1
- Package Spec generated