1000字范文,内容丰富有趣,学习的好帮手!
1000字范文 > python读取二进制流的CSV文件 读取zip压缩包中的csv文件(流)并把数据解析成dict

python读取二进制流的CSV文件 读取zip压缩包中的csv文件(流)并把数据解析成dict

时间:2023-07-18 16:36:47

相关推荐

python读取二进制流的CSV文件 读取zip压缩包中的csv文件(流)并把数据解析成dict

csv文件如下,需要读取其中的数据,并将其中的数据封装成[dict],也就是list中包含一条条dict数据

csv文件自己准备吧,随处可见的,自己创一个就行,代码如下,都是自己写的

import pdbimport zipfileimport csvfrom io import StringIOupf_zip = zipfile.ZipFile('/home/raypick/teststh/5GC_GD_HUAWEI.zip')upf_csv_stream = upf_zip.read('5GC_GD_HUAWEI/CM/0921/UPF_0921_V.csv')data_reader = csv.reader(StringIO(upf_csv_stream.decode('utf-8'), newline=''))# 读取的csv文件内容转换成listcsv_list = list(data_reader)# 获取csv的第一列为dict的key值key_list = csv_list[0]# 将csv取出的数据处理成dict形式dict_list = []for value in range(1, len(csv_list)):# dict必须声明在此位置,后面的dict_list.append()时里面的dict是不同的对象,若声明全局变量,那dict_list中的dict的指针全是指向同一个对象,值完全一致csv_dict = {}for item in range(0, len(key_list)):# 向dict中添加key和valuecsv_dict[key_list[item]] = csv_list[value][item]# 将处理完成的dict追加到dict_list中dict_list.append(csv_dict)pdb.set_trace()

-10-14更新

读取压缩包下所有文件,并筛选符合条件的文件进行批量获取数据

import pdbimport zipfileimport csvfrom io import StringIOdef get_data_from_csv(csv_path):upf_csv_stream = upf_zip.read(csv_path)data_reader = csv.reader(StringIO(upf_csv_stream.decode('utf-8'), newline=''))# 读取的csv文件内容转换成listcsv_list = list(data_reader)# 获取csv的第一列为dict的key值key_list = csv_list[0]# 将csv取出的数据处理成dict形式dict_list = []for value in range(1, len(csv_list)):# dict必须声明在此位置,后面的dict_list.append()时里面的dict是不同的对象,若声明全局变量,那dict_list中的dict的指针全是指向同一个对象,值完全一致csv_dict = {}for item in range(0, len(key_list)):# 向dict中添加key和valuecsv_dict[key_list[item]] = csv_list[value][item]# 将处理完成的dict追加到dict_list中dict_list.append(csv_dict)return dict_listpdb.set_trace()upf_zip = zipfile.ZipFile('/home/raypick/teststh/5GC_GD_HUAWEI1.zip')# file_name_list = upf_zip.namelist()file_name_list = [item for item in upf_zip.namelist() if item.endswith('.csv') & item.__contains__('CM') & item.__contains__('UPF')]dict_list = []for path in file_name_list:dict_list.extend(get_data_from_csv(path))pdb.set_trace()

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。