- 主题:求一个存数据的方法
我有一个excel表,里面存了很多信息,然后我读成了一个很复杂的数据结构,list套dict,又套list,and etc
这个表并不是经常改动,所以数据结构的内容也就不会经常改动
通过这些信息,我需要做一些处理,而且可能是不同的部门要做不同的处理,就是每个部门handle自己的处理的代码
不同的人运行代码的时候,都需要读一遍这个excel表,很慢
有没有一种什么办法,把读取完之后的数据结构给存成一个文件,每回大家都去读那个已经解析过后的文件就行了。从而提高读取的效率。
我能想到的是
1. matlab有一个mat文件,就是把workspace里面的数据给存成二进制的mat文件,以后可以load这个mat文件。我的需求就和这个mat文件类似。只不过我是要python的
2. 现成的格式,比如json,yaml是一个不错的选择,我相信也有现成的轮子,让我存成json或者yaml格式。但是,这样也不好。这样从每次解析excel表,变成了每次解析json或者yaml
3. 所以最佳选择还是存成二进制文件
4. 数据库?我没有用过数据库,这个规模的数据量,用数据库是不是大材小用。excel的总行数也就万这个级别,不到10w
望诸君指点一二
--
FROM 1.202.141.*
pickle
【 在 lobachevsky 的大作中提到: 】
: 我有一个excel表,里面存了很多信息,然后我读成了一个很复杂的数据结构,list套dict,又套list,and etc
:
: 这个表并不是经常改动,所以数据结构的内容也就不会经常改动
:
: 通过这些信息,我需要做一些处理,而且可能是不同的部门要做不同的处理,就是每个部门han
: ..................
发自「今日水木 on iPhone XS」
--
FROM 129.227.142.*
好的
谢谢
【 在 wwwfish 的大作中提到: 】
: pickle
: 发自「今日水木 on iPhone XS」
--
FROM 1.202.141.*
不是要发邮件
是要解析这个excel
解析这个过程慢,秒量级
当然你可以说我代码写得烂
秒量级我也不想等
【 在 ToSimplicity 的大作中提到: 】
: 你是把这个excel文件用邮件发来发去么?
: 难以想象不到10万的excel打开会慢
--
FROM 1.202.141.*
阿里云和腾讯云mysql数据库服务,做活动时候挺便宜的
【 在 lobachevsky 的大作中提到: 】
: 我有一个excel表,里面存了很多信息,然后我读成了一个很复杂的数据结构,list套dict,又套list,and etc
: 这个表并不是经常改动,所以数据结构的内容也就不会经常改动
: 通过这些信息,我需要做一些处理,而且可能是不同的部门要做不同的处理,就是每个部门handle自己的处理的代码
: ...................
--
FROM 182.48.101.*
嗯
数据库我觉得有点牛刀了
pickle足够满足我的需求了
【 在 xuhuadage 的大作中提到: 】
: 阿里云和腾讯云mysql数据库服务,做活动时候挺便宜的
--
FROM 1.202.141.*
sqlite 比较合适
【 在 lobachevsky 的大作中提到: 】
: 我有一个excel表,里面存了很多信息,然后我读成了一个很复杂的数据结构,list套dict,又套list,and etc
: 这个表并不是经常改动,所以数据结构的内容也就不会经常改动
: 通过这些信息,我需要做一些处理,而且可能是不同的部门要做不同的处理,就是每个部门handle自己的处理的代码
: ...................
--
FROM 117.136.65.*
现在多数语言都有操作json的库,不需要自己写解析过程。json还有可读性。
【 在 lobachevsky 的大作中提到: 】
: 我有一个excel表,里面存了很多信息,然后我读成了一个很复杂的数据结构,list套dict,又套list,and etc
: 这个表并不是经常改动,所以数据结构的内容也就不会经常改动
: 通过这些信息,我需要做一些处理,而且可能是不同的部门要做不同的处理,就是每个部门handle自己的处理的代码
: ...................
--
FROM 124.64.17.*
python自带sqlite数据库,可以存成.db文件,也方便其他人使用
--
FROM 117.121.101.*
数据在云端集中存取,牛刀可能会最快捷和简洁。建议对比试试
【 在 lobachevsky 的大作中提到: 】
: 嗯
: 数据库我觉得有点牛刀了
: pickle足够满足我的需求了
: ...................
--
FROM 182.48.101.*