upplib 3.4.2__py3-none-any.whl → 3.4.4__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
upplib/file_function.py CHANGED
@@ -13,7 +13,7 @@ def get_file(file_path: str = None,
13
13
  endswith: str = None) -> list[str]:
14
14
  """
15
15
  有关文件的操作
16
- 查询指定文件夹下面的所有的文件信息, 也可以是指定的文件
16
+ 查询指定文件夹下面的所有的文件的完整路径, 也可以是指定的文件
17
17
  file_path : 文件路径
18
18
  path_startswith : 文件路径,以 path_startswith 开头
19
19
  startswith : 文件名称,以 startswith 开头
upplib/file_to_text.py CHANGED
@@ -1,224 +1,5 @@
1
1
  from upplib import *
2
2
  from upplib.common_package import *
3
- from upplib.file_function import get_file
4
-
5
-
6
- def to_list(file_name: str = 'a.txt',
7
- sep: str = None,
8
- sep_line: str = None,
9
- sep_line_contain: str = None,
10
- sep_line_prefix: str = None,
11
- sep_line_suffix: str = None,
12
- sep_all: str = None,
13
- line_ignore_start_with: list[str] | set[str] | str = None,
14
- line_ignore_end_with: list[str] | set[str] | str | None = None,
15
- line_ignore_empty: bool | None = None,
16
- start_index: int = None,
17
- start_line: str = None,
18
- end_index: int = None,
19
- end_line: str = None,
20
- count: int = None,
21
- sheet_index: int = 1,
22
- column_index: list[str] | set[str] | str | None = None,
23
- column_date: list[str] | set[str] | str | None = None,
24
- column_datetime: list[str] | set[str] | str | None = None) -> list:
25
- """
26
- 当读取 txt 之类的文件的时候
27
- 将 txt 文件读取到 list 中, 每一行自动过滤掉行前行后的特殊字符
28
- sep : 是否对每一行进行分割,如果存在这个字段,就分割
29
- sep_all : 将文件转化成一个字符串,然后对这个字符串,再次总体分割
30
- start_index : 从这个地方开始读取,从1开始标号 , 包含这一行
31
- start_line : 从这个地方开始读取,从第一行开始找到这个字符串开始标记 , 包含这一行
32
- end_index : 读取到这个地方结束,从1开始标号 , 不包含这一行
33
- end_line : 读取到这个地方结束,从第一行开始找到这个字符串开始标记 , 不包含这一行
34
- count : 读取指定的行数
35
- ##############################################
36
- 当读取 excel 之类的文件的时候
37
- 将 excel 文件读取到 list 中, 可以指定 sheet, 也可以指定列 column_index(列) ,自动过滤掉每个单元格前后的特殊字符
38
- sheet : 从 1 开始编号,
39
- column_index : 从 1 开始编号, 指定列
40
- column_index : 如果是指定值, 这个时候返回的是一个 list, 没有嵌套 list
41
- column_index : 如果是 '1,2,3,4' [1,2,3,4], 返回的是一个嵌套 list[list]
42
- column_date : 指定日期格式的列,规则与 column_index 一样
43
- column_datetime : 指定日期格式的列,规则与 column_index 一样
44
- 返回的数据一定是一个 list
45
- """
46
- if file_name.endswith('.xls') or file_name.endswith('.xlsx'):
47
- return to_list_from_excel(file_name=file_name,
48
- sheet_index=sheet_index,
49
- column_index=column_index,
50
- column_date=column_date,
51
- column_datetime=column_datetime)
52
- return to_list_from_txt(file_name=file_name,
53
- sep=sep,
54
- sep_line=sep_line,
55
- sep_line_contain=sep_line_contain,
56
- sep_line_prefix=sep_line_prefix,
57
- sep_line_suffix=sep_line_suffix,
58
- sep_all=sep_all,
59
- line_ignore_start_with=line_ignore_start_with,
60
- line_ignore_end_with=line_ignore_end_with,
61
- line_ignore_empty=line_ignore_empty,
62
- start_index=start_index,
63
- start_line=start_line,
64
- end_index=end_index,
65
- end_line=end_line,
66
- count=count)
67
-
68
-
69
- def to_list_from_excel(file_name: str = 'a.xls',
70
- sheet_index: int = 1,
71
- column_index: list | int | str | None = None,
72
- column_date: list | int | str | None = None,
73
- column_datetime: list | int | str | None = None) -> list:
74
- """
75
- 当读取 excel 之类的文件的时候
76
- 将 excel 文件读取到 list 中, 可以指定 sheet, 也可以指定列 column_index(列) ,自动过滤掉每个单元格前后的特殊字符
77
- sheet_index : 从 1 开始编号,
78
- column_index : 从 1 开始编号, 指定列, 如果是指定值是一个, 这个时候返回的是一个 list, 没有嵌套 list
79
- 如果是 '1,2,3,4' [1,2,3,4], 返回的是一个嵌套 list[list]
80
- column_date : 指定日期格式的列,规则与 column_index 一样
81
- column_datetime : 指定日期格式的列,规则与 column_index 一样
82
- """
83
- if file_is_empty(file_name):
84
- return []
85
- data_list = list()
86
- # excel 表格解析成 list 数据
87
- list_index = []
88
- for one_index in [column_index, column_date, column_datetime]:
89
- list_index_one = None
90
- if one_index is not None:
91
- list_index_one = []
92
- if isinstance(one_index, int):
93
- list_index_one.append(one_index)
94
- if isinstance(one_index, str):
95
- i_list = one_index.split(',')
96
- for i in i_list:
97
- list_index_one.append(int(i))
98
- if isinstance(one_index, list):
99
- for i in one_index:
100
- list_index_one.append(int(i))
101
- list_index.append(list_index_one)
102
- list_all = []
103
- for one_list in list_index:
104
- if one_list is not None:
105
- for o in one_list:
106
- list_all.append(o)
107
- if len(list_all) > 0 and list_index[0] is not None:
108
- list_index[0] = list_all
109
- # 是否是单 list 类型的数据
110
- list_only_one = False
111
- if list_index[0] is not None and len(list_index[0]) == 1:
112
- list_only_one = True
113
- # 是 xls 格式
114
- if file_name.endswith('.xls'):
115
- book = xlrd.open_workbook(file_name) # 打开一个excel
116
- sheet = book.sheet_by_index(sheet_index - 1) # 根据顺序获取sheet
117
- for i in range(sheet.nrows): # 0 1 2 3 4 5
118
- rows = sheet.row_values(i)
119
- row_data = []
120
- for j in range(len(rows)):
121
- cell_data = str(rows[j]).strip()
122
- is_date = False
123
- is_datetime = False
124
- # 日期格式的列
125
- if list_index[1] is not None and j + 1 in list_index[1]:
126
- cell_data = to_date(xlrd.xldate_as_datetime(to_int(rows[j]), 0))
127
- is_date = True
128
- row_data.append(cell_data)
129
- if list_only_one:
130
- row_data = cell_data
131
- # 日期时间格式的列
132
- if not is_date and list_index[2] is not None and j + 1 in list_index[2]:
133
- cell_data = to_datetime(xlrd.xldate_as_datetime(to_int(rows[j]), 0))
134
- is_datetime = True
135
- row_data.append(cell_data)
136
- if list_only_one:
137
- row_data = cell_data
138
- # 指定需要的列
139
- if not is_date and not is_datetime:
140
- if list_index[0] is None:
141
- row_data.append(cell_data)
142
- else:
143
- # 指定需要的列
144
- if j + 1 in list_index[0]:
145
- row_data.append(cell_data)
146
- if list_only_one:
147
- row_data = cell_data
148
- data_list.append(row_data)
149
- # 是 xlsx 格式
150
- if file_name.endswith('.xlsx'):
151
- wb = openpyxl.load_workbook(filename=file_name, read_only=True)
152
- ws = wb[wb.sheetnames[sheet_index - 1]]
153
- for rows in ws.rows:
154
- row_data = []
155
- for j in range(len(rows)):
156
- cell_data = str(rows[j].value).strip()
157
- is_date = False
158
- is_datetime = False
159
- # 日期格式的列
160
- if list_index[1] is not None and j + 1 in list_index[1]:
161
- cell_data = to_date(cell_data)
162
- is_date = True
163
- row_data.append(cell_data)
164
- if list_only_one:
165
- row_data = cell_data
166
- # 日期时间格式的列
167
- if not is_date and list_index[2] is not None and j + 1 in list_index[2]:
168
- cell_data = to_datetime(cell_data)
169
- is_datetime = True
170
- row_data.append(cell_data)
171
- if list_only_one:
172
- row_data = cell_data
173
- # 指定需要的列
174
- if not is_date and not is_datetime:
175
- if list_index[0] is None:
176
- row_data.append(cell_data)
177
- else:
178
- # 指定需要的列
179
- if j + 1 in list_index[0]:
180
- row_data.append(cell_data)
181
- if list_only_one:
182
- row_data = cell_data
183
- data_list.append(row_data)
184
- return data_list
185
-
186
-
187
- def to_list_from_txt_with_blank_line(file_name: str = 'a.txt') -> list:
188
- """
189
- 将一个文件中以空行作为分隔符,
190
- 组成一个 list(list) 数据
191
- 多行空行,自动合并到一行空行
192
- """
193
- return to_list_from_txt(file_name, sep_line='')
194
-
195
-
196
- def to_list_json_from_txt(file_name: str = 'a.txt',
197
- start_index: int = None,
198
- start_line: str = None,
199
- start_line_exclude: str | list[str] | set[str] = None,
200
- end_index: int = None,
201
- end_line: str = None,
202
- end_line_exclude: str | list[str] | set[str] = None,
203
- count: int = None) -> list:
204
- """
205
- 将一个文件中的数据按照行来区分,
206
- 会自动过滤掉空格行,
207
- 组成一个 list[json] 数据
208
- 可以将以下文本转 list[json]
209
- {"accessKey":"1","signature":"4","timestamp":"1747639787"}
210
- {"accessKey":"2","signature":"5","timestamp":"1747639787"}
211
- {"accessKey":"3","signature":"6","timestamp":"1747639787"}
212
- """
213
- return to_list_from_txt(file_name,
214
- start_index=start_index,
215
- start_line=start_line,
216
- start_line_exclude=start_line_exclude,
217
- end_index=end_index,
218
- end_line=end_line,
219
- end_line_exclude=end_line_exclude,
220
- count=count,
221
- line_json=True)
222
3
 
223
4
 
224
5
  def to_list_from_txt(file_name: str = 'a.txt',
@@ -245,31 +26,30 @@ def to_list_from_txt(file_name: str = 'a.txt',
245
26
  end_line_exclude: str | list[str] | set[str] = None,
246
27
  count: int = None) -> list:
247
28
  """
248
- txt 文件转化成 list 的方法
249
- 当读取 txt 之类的文件的时候
250
- txt 文件读取到 list 中, 每一行自动过滤掉行前行后的特殊字符
251
- sep : 对每一行进行分割,将 list(str) 转化为 list(list(str)), 或者将 list(list(str)) 转化为 list(list(list(str)))
252
- sep_line : 这一行是一个分隔符, 分隔符与这行一样, 将 list(str) 转化为 list(list(str))
253
- sep_line_with_space_count : 分隔符是空格的个数, 将 list(str) 转化为 list(list(str))
254
- sep_line_contain : 这一行是一个分隔符,包含这个行分隔符的做分割, 将 list(str) 转化为 list(list(str))
255
- sep_line_prefix : 这一行是一个分隔符,以这个分隔符作为前缀的, list(str) 转化为 list(list(str))
256
- sep_line_suffix : 这一行是一个分隔符,以这个分隔符作为后缀的, 将 list(str) 转化为 list(list(str))
257
- sep_is_front : 这一行,分割行,是包含到前面,还是包含到
258
- sep_all : 将文件转化成一个字符串,然后对这个字符串,再次总体分割 list(str) 转化为 str , 然后再次转化成 list(str)
259
- line_ignore_start_with : 忽略以这个为开头的行
260
- line_ignore_end_with : 忽略以这个为结尾的行
261
- line_ignore_empty : 如果这一行为空,就忽略这行
262
- line_must_start_with : 这一行必须以这个字符串为开始
263
- line_must_contain : 这一行必须包含这个字符串
264
- line_join : list(list(str)) 转化成 list(str) 类型的数据
265
- line_json : list(str) 转化成 list(json) 类型的数据, 会自动过滤掉空格行
266
- start_index : 从这个地方开始读取,从1开始标号 , 包含这一行
267
- start_line : 从这个地方开始读取,从第一行开始找到这个字符串开始标记 , 包含这一行
268
- start_line_exclude : 从这个地方开始读取,从第一行开始找到这个字符串开始标记 , 不包含这一行, 返回的是一个 list(' '.join(one_line_list))
269
- end_index : 读取到这个地方结束,从1开始标号 , 不包含这一行
270
- end_line : 读取到这个地方结束,从第一行开始找到这个字符串开始标记 , 不包含这一行
271
- end_line_exclude : 读取到这个地方结束,从第一行开始找到这个字符串开始标记 , 不包含这一行, 返回的是一个 list(' '.join(one_line_list))
272
- count : 读取指定的行数
29
+ :param file_name: 文件名称
30
+ :param sep: 分隔符, 对每一行进行分割,将 list(str) 转化为 list(list(str)), 或者将 list(list(str)) 转化为 list(list(list(str)))
31
+ :param sep_line: 分隔符, 行分隔符, 这一行是一个分隔符, 分隔符与这行一样, 将 list(str) 转化为 list(list(str))
32
+ :param sep_line_contain: 分隔符, 行分隔符, 必须包含. 这一行是一个分隔符,包含这个行分隔符的做分割, list(str) 转化为 list(list(str))
33
+ :param sep_line_prefix: 分隔符, 行分隔符, 必须以什么开头. 这一行是一个分隔符,以这个分隔符作为前缀的, 将 list(str) 转化为 list(list(str))
34
+ :param sep_line_suffix: 分隔符, 行分隔符, 必须以什么结尾. 这一行是一个分隔符,以这个分隔符作为后缀的, 将 list(str) 转化为 list(list(str))
35
+ :param sep_line_with_space_count: 分隔符, 行分隔符, 必须包含空格的数量, 分隔符是空格的个数, 将 list(str) 转化为 list(list(str))
36
+ :param sep_is_front: 分隔符, 行分隔符, 是否在前面, 这一行,分割行,是包含到前面,还是包含到
37
+ :param sep_all: 分隔符, 所有的分隔符. 将文件转化成一个字符串,然后对这个字符串,再次总体分割 将 list(str) 转化为 str , 然后再次转化成 list(str)
38
+ :param line_ignore_start_with: 行忽略, 以什么开头. 忽略以这个为开头的行
39
+ :param line_ignore_end_with: 行忽略, 以什么结尾. 忽略以这个为结尾的行
40
+ :param line_ignore_empty: 行忽略, 是否忽略空行. 如果这一行为空,就忽略这行
41
+ :param line_join: 行连接符. 将 list(list(str)) 转化成 list(str) 类型的数据
42
+ :param line_must_start_with: 行必须以什么开头. 这一行必须以这个字符串为开始
43
+ :param line_must_contain: 行必须包含什么. 这一行必须包含这个字符串
44
+ :param line_json: 是否是 json 格式. 将 list(str) 转化成 list(json) 类型的数据, 会自动过滤掉空格行
45
+ :param start_index: 开始索引. 从这个地方开始读取,从1开始标号 , 包含这一行
46
+ :param start_line: 开始行. 从这个地方开始读取,从第一行开始找到这个字符串开始标记 , 包含这一行
47
+ :param start_line_exclude: 开始行, 排除什么. 从这个地方开始读取,从第一行开始找到这个字符串开始标记 , 不包含这一行, 返回的是一个 list(' '.join(one_line_list))
48
+ :param end_index: 结束索引. 读取到这个地方结束,从1开始标号 , 不包含这一行
49
+ :param end_line: 结束行. 读取到这个地方结束,从第一行开始找到这个字符串开始标记 , 不包含这一行
50
+ :param end_line_exclude: 结束行, 排除什么. 读取到这个地方结束,从第一行开始找到这个字符串开始标记 , 不包含这一行, 返回的是一个 list(' '.join(one_line_list))
51
+ :param count: 数量. 读取指定的行数
52
+ :return:
273
53
  """
274
54
  if file_is_empty(file_name=file_name):
275
55
  return []
@@ -464,6 +244,224 @@ def to_list_from_txt(file_name: str = 'a.txt',
464
244
  return data_list
465
245
 
466
246
 
247
+ def to_list_from_excel(file_name: str = 'a.xls',
248
+ sheet_index: int = 1,
249
+ column_index: list | int | str | None = None,
250
+ column_date: list | int | str | None = None,
251
+ column_datetime: list | int | str | None = None) -> list:
252
+ """
253
+ 当读取 excel 之类的文件的时候
254
+ 将 excel 文件读取到 list 中, 可以指定 sheet, 也可以指定列 column_index(列) ,自动过滤掉每个单元格前后的特殊字符
255
+ sheet_index : 从 1 开始编号,
256
+ column_index : 从 1 开始编号, 指定列, 如果是指定值是一个, 这个时候返回的是一个 list, 没有嵌套 list
257
+ 如果是 '1,2,3,4' [1,2,3,4], 返回的是一个嵌套 list[list]
258
+ column_date : 指定日期格式的列,规则与 column_index 一样
259
+ column_datetime : 指定日期格式的列,规则与 column_index 一样
260
+ """
261
+ if file_is_empty(file_name):
262
+ return []
263
+ data_list = list()
264
+ # excel 表格解析成 list 数据
265
+ list_index = []
266
+ for one_index in [column_index, column_date, column_datetime]:
267
+ list_index_one = None
268
+ if one_index is not None:
269
+ list_index_one = []
270
+ if isinstance(one_index, int):
271
+ list_index_one.append(one_index)
272
+ if isinstance(one_index, str):
273
+ i_list = one_index.split(',')
274
+ for i in i_list:
275
+ list_index_one.append(int(i))
276
+ if isinstance(one_index, list):
277
+ for i in one_index:
278
+ list_index_one.append(int(i))
279
+ list_index.append(list_index_one)
280
+ list_all = []
281
+ for one_list in list_index:
282
+ if one_list is not None:
283
+ for o in one_list:
284
+ list_all.append(o)
285
+ if len(list_all) > 0 and list_index[0] is not None:
286
+ list_index[0] = list_all
287
+ # 是否是单 list 类型的数据
288
+ list_only_one = False
289
+ if list_index[0] is not None and len(list_index[0]) == 1:
290
+ list_only_one = True
291
+ # 是 xls 格式
292
+ if file_name.endswith('.xls'):
293
+ book = xlrd.open_workbook(file_name) # 打开一个excel
294
+ sheet = book.sheet_by_index(sheet_index - 1) # 根据顺序获取sheet
295
+ for i in range(sheet.nrows): # 0 1 2 3 4 5
296
+ rows = sheet.row_values(i)
297
+ row_data = []
298
+ for j in range(len(rows)):
299
+ cell_data = str(rows[j]).strip()
300
+ is_date = False
301
+ is_datetime = False
302
+ # 日期格式的列
303
+ if list_index[1] is not None and j + 1 in list_index[1]:
304
+ cell_data = to_date(xlrd.xldate_as_datetime(to_int(rows[j]), 0))
305
+ is_date = True
306
+ row_data.append(cell_data)
307
+ if list_only_one:
308
+ row_data = cell_data
309
+ # 日期时间格式的列
310
+ if not is_date and list_index[2] is not None and j + 1 in list_index[2]:
311
+ cell_data = to_datetime(xlrd.xldate_as_datetime(to_int(rows[j]), 0))
312
+ is_datetime = True
313
+ row_data.append(cell_data)
314
+ if list_only_one:
315
+ row_data = cell_data
316
+ # 指定需要的列
317
+ if not is_date and not is_datetime:
318
+ if list_index[0] is None:
319
+ row_data.append(cell_data)
320
+ else:
321
+ # 指定需要的列
322
+ if j + 1 in list_index[0]:
323
+ row_data.append(cell_data)
324
+ if list_only_one:
325
+ row_data = cell_data
326
+ data_list.append(row_data)
327
+ # 是 xlsx 格式
328
+ if file_name.endswith('.xlsx'):
329
+ wb = openpyxl.load_workbook(filename=file_name, read_only=True)
330
+ ws = wb[wb.sheetnames[sheet_index - 1]]
331
+ for rows in ws.rows:
332
+ row_data = []
333
+ for j in range(len(rows)):
334
+ cell_data = str(rows[j].value).strip()
335
+ is_date = False
336
+ is_datetime = False
337
+ # 日期格式的列
338
+ if list_index[1] is not None and j + 1 in list_index[1]:
339
+ cell_data = to_date(cell_data)
340
+ is_date = True
341
+ row_data.append(cell_data)
342
+ if list_only_one:
343
+ row_data = cell_data
344
+ # 日期时间格式的列
345
+ if not is_date and list_index[2] is not None and j + 1 in list_index[2]:
346
+ cell_data = to_datetime(cell_data)
347
+ is_datetime = True
348
+ row_data.append(cell_data)
349
+ if list_only_one:
350
+ row_data = cell_data
351
+ # 指定需要的列
352
+ if not is_date and not is_datetime:
353
+ if list_index[0] is None:
354
+ row_data.append(cell_data)
355
+ else:
356
+ # 指定需要的列
357
+ if j + 1 in list_index[0]:
358
+ row_data.append(cell_data)
359
+ if list_only_one:
360
+ row_data = cell_data
361
+ data_list.append(row_data)
362
+ return data_list
363
+
364
+
365
+ def to_list(file_name: str = 'a.txt',
366
+ sep: str = None,
367
+ sep_line: str = None,
368
+ sep_line_contain: str = None,
369
+ sep_line_prefix: str = None,
370
+ sep_line_suffix: str = None,
371
+ sep_all: str = None,
372
+ line_ignore_start_with: list[str] | set[str] | str = None,
373
+ line_ignore_end_with: list[str] | set[str] | str | None = None,
374
+ line_ignore_empty: bool | None = None,
375
+ start_index: int = None,
376
+ start_line: str = None,
377
+ end_index: int = None,
378
+ end_line: str = None,
379
+ count: int = None,
380
+ sheet_index: int = 1,
381
+ column_index: list[str] | set[str] | str | None = None,
382
+ column_date: list[str] | set[str] | str | None = None,
383
+ column_datetime: list[str] | set[str] | str | None = None) -> list:
384
+ """
385
+ 当读取 txt 之类的文件的时候
386
+ 将 txt 文件读取到 list 中, 每一行自动过滤掉行前行后的特殊字符
387
+ sep : 是否对每一行进行分割,如果存在这个字段,就分割
388
+ sep_all : 将文件转化成一个字符串,然后对这个字符串,再次总体分割
389
+ start_index : 从这个地方开始读取,从1开始标号 , 包含这一行
390
+ start_line : 从这个地方开始读取,从第一行开始找到这个字符串开始标记 , 包含这一行
391
+ end_index : 读取到这个地方结束,从1开始标号 , 不包含这一行
392
+ end_line : 读取到这个地方结束,从第一行开始找到这个字符串开始标记 , 不包含这一行
393
+ count : 读取指定的行数
394
+ ##############################################
395
+ 当读取 excel 之类的文件的时候
396
+ 将 excel 文件读取到 list 中, 可以指定 sheet, 也可以指定列 column_index(列) ,自动过滤掉每个单元格前后的特殊字符
397
+ sheet : 从 1 开始编号,
398
+ column_index : 从 1 开始编号, 指定列
399
+ column_index : 如果是指定值, 这个时候返回的是一个 list, 没有嵌套 list
400
+ column_index : 如果是 '1,2,3,4' [1,2,3,4], 返回的是一个嵌套 list[list]
401
+ column_date : 指定日期格式的列,规则与 column_index 一样
402
+ column_datetime : 指定日期格式的列,规则与 column_index 一样
403
+ 返回的数据一定是一个 list
404
+ """
405
+ if file_name.endswith('.xls') or file_name.endswith('.xlsx'):
406
+ return to_list_from_excel(file_name=file_name,
407
+ sheet_index=sheet_index,
408
+ column_index=column_index,
409
+ column_date=column_date,
410
+ column_datetime=column_datetime)
411
+ return to_list_from_txt(file_name=file_name,
412
+ sep=sep,
413
+ sep_line=sep_line,
414
+ sep_line_contain=sep_line_contain,
415
+ sep_line_prefix=sep_line_prefix,
416
+ sep_line_suffix=sep_line_suffix,
417
+ sep_all=sep_all,
418
+ line_ignore_start_with=line_ignore_start_with,
419
+ line_ignore_end_with=line_ignore_end_with,
420
+ line_ignore_empty=line_ignore_empty,
421
+ start_index=start_index,
422
+ start_line=start_line,
423
+ end_index=end_index,
424
+ end_line=end_line,
425
+ count=count)
426
+
427
+
428
+ def to_list_from_txt_with_blank_line(file_name: str = 'a.txt') -> list:
429
+ """
430
+ 将一个文件中以空行作为分隔符,
431
+ 组成一个 list(list) 数据
432
+ 多行空行,自动合并到一行空行
433
+ """
434
+ return to_list_from_txt(file_name, sep_line='')
435
+
436
+
437
+ def to_list_json_from_txt(file_name: str = 'a.txt',
438
+ start_index: int = None,
439
+ start_line: str = None,
440
+ start_line_exclude: str | list[str] | set[str] = None,
441
+ end_index: int = None,
442
+ end_line: str = None,
443
+ end_line_exclude: str | list[str] | set[str] = None,
444
+ count: int = None) -> list:
445
+ """
446
+ 将一个文件中的数据按照行来区分,
447
+ 会自动过滤掉空格行,
448
+ 组成一个 list[json] 数据
449
+ 可以将以下文本转 list[json]
450
+ {"accessKey":"1","signature":"4","timestamp":"1747639787"}
451
+ {"accessKey":"2","signature":"5","timestamp":"1747639787"}
452
+ {"accessKey":"3","signature":"6","timestamp":"1747639787"}
453
+ """
454
+ return to_list_from_txt(file_name,
455
+ start_index=start_index,
456
+ start_line=start_line,
457
+ start_line_exclude=start_line_exclude,
458
+ end_index=end_index,
459
+ end_line=end_line,
460
+ end_line_exclude=end_line_exclude,
461
+ count=count,
462
+ line_json=True)
463
+
464
+
467
465
  # 读取文件中的数据,返回一个 str
468
466
  def to_str_from_file(file_name: str = 'a.txt',
469
467
  str_join: str = ' ',
@@ -492,13 +490,16 @@ def to_json_from_file(file_name: str = 'a.txt',
492
490
  start_line: str = None,
493
491
  end_index: int = None,
494
492
  end_line: str = None,
493
+ line_ignore_start_with=None,
495
494
  count: int = None) -> dict[str, Any]:
495
+ if line_ignore_start_with is None:
496
+ line_ignore_start_with = ['//', '/*', '#']
496
497
  return to_data_from_file(file_name=file_name,
497
498
  start_index=start_index,
498
499
  start_line=start_line,
499
500
  end_index=end_index,
500
501
  end_line=end_line,
501
- line_ignore_start_with=['//', '/*', '#'],
502
+ line_ignore_start_with=line_ignore_start_with,
502
503
  count=count,
503
504
  r_json=True)
504
505
 
@@ -545,3 +546,61 @@ def to_data_from_file(file_name: str = 'a.txt',
545
546
  column_date=column_date,
546
547
  column_datetime=column_datetime)
547
548
  return str_join.join(d) if r_str else json.loads(str_join.join(d)) if r_json else d
549
+
550
+
551
+ def to_list_from_txt_with_ignore_line(file_name: str = 'a.txt',
552
+ sep: str = None,
553
+ sep_line: str = None,
554
+ sep_line_contain: str = None,
555
+ sep_line_prefix: str = None,
556
+ sep_line_suffix: str = None,
557
+ sep_line_with_space_count: int = None,
558
+ sep_is_front: bool = True,
559
+ sep_all: str = None,
560
+ line_ignore_start_with: list | int | str = None,
561
+ line_ignore_end_with: list | int | str = None,
562
+ line_ignore_empty: bool | None = True,
563
+ line_join: str = None,
564
+ line_must_start_with: str = None,
565
+ line_must_contain: str = None,
566
+ line_json: bool = None,
567
+ start_index: int = None,
568
+ start_line: str = None,
569
+ start_line_exclude: str | list[str] | set[str] = None,
570
+ end_index: int = None,
571
+ end_line: str = None,
572
+ end_line_exclude: str | list[str] | set[str] = None,
573
+ count: int = None) -> list:
574
+ return to_list_from_txt(file_name=file_name,
575
+ sep=sep,
576
+ sep_line=sep_line,
577
+ sep_line_contain=sep_line_contain,
578
+ sep_line_prefix=sep_line_prefix,
579
+ sep_line_suffix=sep_line_suffix,
580
+ sep_line_with_space_count=sep_line_with_space_count,
581
+ sep_is_front=sep_is_front,
582
+ sep_all=sep_all,
583
+ line_ignore_start_with=line_ignore_start_with,
584
+ line_ignore_end_with=line_ignore_end_with,
585
+ line_ignore_empty=line_ignore_empty,
586
+ line_join=line_join,
587
+ line_must_start_with=line_must_start_with,
588
+ line_must_contain=line_must_contain,
589
+ line_json=line_json,
590
+ start_index=start_index,
591
+ start_line=start_line,
592
+ start_line_exclude=start_line_exclude,
593
+ end_index=end_index,
594
+ end_line=end_line,
595
+ end_line_exclude=end_line_exclude,
596
+ count=count)
597
+
598
+
599
+ # 将多个文件 读取成 list
600
+ def to_list_from_txt_list(file_list: list[Any] = None) -> list:
601
+ if file_list is None:
602
+ file_list = []
603
+ data_list = []
604
+ for a in file_list:
605
+ data_list.extend(to_list_from_txt(file_name=a))
606
+ return data_list
upplib/index.py CHANGED
@@ -443,13 +443,3 @@ def to_list_list(data_list: list = None,
443
443
  if len(o_list):
444
444
  r_list.append(o_list)
445
445
  return r_list
446
-
447
-
448
- # 将多个文件 读取成 list
449
- def to_list_from_txt_list(file_list: list[Any] = None) -> list:
450
- if file_list is None:
451
- file_list = []
452
- data_list = []
453
- for a in file_list:
454
- data_list.extend(to_list_from_txt(file_name=a))
455
- return data_list
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: upplib
3
- Version: 3.4.2
3
+ Version: 3.4.4
4
4
  Summary: util
5
5
  Author: Luck
6
6
  Author-email: wantwaterfish@gmail.com
@@ -6,11 +6,11 @@ upplib/common_package.py,sha256=2-u66k4WbZnX6-PUaYy8wsblnz41nvtX4Hwo3J5hjO0,832
6
6
  upplib/config_data.py,sha256=KuRh0chqILL-2jXOUngVqjFMzkNZ0QFo_EVpBtptMuc,2757
7
7
  upplib/datetime_function.py,sha256=98ro3cV0fvHVoUIHRSv7bvVecBXSrnkqEiP1WhJCwTU,9481
8
8
  upplib/db.py,sha256=-3ZALQSzP92-zIhye6ckrXIctbHsVmwoLiCVOlTyDyo,7058
9
- upplib/file_function.py,sha256=OtVGnmUPd7UO6OJgZjlLgzGMXlftGt94o-_C6-aG2k8,10407
10
- upplib/file_to_text.py,sha256=P1HHAZDYlJ23jnd0ZU4-JnBDL9l3-bUKjq4kNTXGFH0,26798
9
+ upplib/file_function.py,sha256=SeL9B3275zweJ2Ta2fzQNn_3cp_NmqZV6jlmN7QOXTc,10416
10
+ upplib/file_to_text.py,sha256=O5GVZ08nOv2BMyirB8R9NLwZOW07bZJB3jP1yu8d8DE,30381
11
11
  upplib/format_data.py,sha256=Qxq-OZ8v6HBRJ-tUcNFem1Imbauk3Y5qJTrAGT0CC4I,10153
12
12
  upplib/http_util.py,sha256=8Xya5qpeCKGaglxKnirOlOnbnBU3K52FGV5Y9c8HH9k,16119
13
- upplib/index.py,sha256=hS_luh6lrMvf_RWvZSJk23eFKLHz5BO52fCcwt6QrmA,13833
13
+ upplib/index.py,sha256=wB0e52cHWISdpJBtbcOje3pyoJrCCPDsnVmVtLCLlBc,13565
14
14
  upplib/mail.py,sha256=pe1ZZlKsah_TiB_Ag3scgiIQegyOznul2awdHur2m4Y,7550
15
15
  upplib/mail_html.py,sha256=W2_WT9WhFykmAFageboJ-6E0dnBHBGMG1vQlBb9__M8,4001
16
16
  upplib/markdown.py,sha256=YXh2Rtb5gvZ755Ecr3r5FcMoDtd2YcqtOFHFv92jWOQ,5803
@@ -19,8 +19,8 @@ upplib/query_log.py,sha256=BAUAVr3lA_GbDzHNjI5beJPs0ngNmy2gCi5Q6UMdr1s,9238
19
19
  upplib/redis_tool.py,sha256=I1kOqBwfQWVIOAY-hQaaOn1Zrx8BNlK83u-pk4uHPCA,707
20
20
  upplib/text_to_file.py,sha256=a9Fqj1voOZWn2n74IIBjM6CDS62cNyGfB9BRX_m7imo,14918
21
21
  upplib/util.py,sha256=K9OAjsbR2R3k0WWPXWWCphxYc25wbPHrW75pweGUSW4,4671
22
- upplib-3.4.2.dist-info/licenses/LICENSE,sha256=WI5JtXXhjcqnIcPllDA1ZtuxNnZ515xjElcILo7z28o,1073
23
- upplib-3.4.2.dist-info/METADATA,sha256=wHDVXtMoW0y6TfMruGDquFkPH9mI-ksVyFOD1VMJcyA,940
24
- upplib-3.4.2.dist-info/WHEEL,sha256=wUyA8OaulRlbfwMtmQsvNngGrxQHAvkKcvRmdizlJi0,92
25
- upplib-3.4.2.dist-info/top_level.txt,sha256=VwdHDDPP79e1LqtRu5_w30hHB4gT0zlj1weuQYOqFoA,7
26
- upplib-3.4.2.dist-info/RECORD,,
22
+ upplib-3.4.4.dist-info/licenses/LICENSE,sha256=WI5JtXXhjcqnIcPllDA1ZtuxNnZ515xjElcILo7z28o,1073
23
+ upplib-3.4.4.dist-info/METADATA,sha256=OQqbBNUDuYLlRGI4QJZwD7vqdaUSJ5HeuOkQcll8aQs,940
24
+ upplib-3.4.4.dist-info/WHEEL,sha256=wUyA8OaulRlbfwMtmQsvNngGrxQHAvkKcvRmdizlJi0,92
25
+ upplib-3.4.4.dist-info/top_level.txt,sha256=VwdHDDPP79e1LqtRu5_w30hHB4gT0zlj1weuQYOqFoA,7
26
+ upplib-3.4.4.dist-info/RECORD,,
File without changes