前言:
今天为大家带来的内容是:用python解决动态的定义变量名(并给其赋值方法:大数据处理)具有很好的参考价值,希望对大家有所帮助。喜欢本文内容的记得点赞转发收藏不迷路哦!!!
最近消费kafka数据到磁盘的时候遇到了这样的问题:
需求:每天大概有1千万条数据,每条数据包含19个字段信息,需要将数据写到服务器磁盘,以第二个字段作为大类建立目录,第7个字段作为小类配合时间戳作为文件名,临时文件后缀tmp,当每个文件的写入条数(可配置,比如100条)达到要求条数时,将后缀tmp改为out。
问题:大类共有30个,小类不计其数而且未知,比如大类为A,小类为a
时间戳为20180606095835234则A目录下的文件名为20180606095835234_a.tmp
这样一来需要在此文件写满100条时,更新时间戳生成第二个文件名,如果此时有1000个文件都在写则需要有1000个时间戳,和1000个计数器记录每个文件当前的条数,如果分别定义1000个变量显然是不划算的。
尝试:中间过程想到了动态定义变量名,即
- 定义第七个字段:seven = data.split('|')[7]
- 定义文件名:filename = time_stamp + '_' + seven+'.tmp',
- 定义文件计数器:seven + ‘_num' = 0
- 定义文件时间戳:seven + '_stamp' = time.time( )
- 想法其实是没问题的,但是这里用到了一个不常用的语法:用一个变量名和一个字符串拼接出来一个新的变量名,并继续赋值(不知道我的表述是否清楚),试过了用local()函数、global()函数、exec()函数都没有达到预期效果,也许是把问题想的太复杂了
- 解决:最后使用三个字典将这个问题完美解决,
- 定义一个字典用来存计数器,字典的每一个键对应一个文件名,值对应当前计数,并实时更新;
- 定义一个字典用来存时间戳,键对应一个文件名,值对应时间戳,达到100条就更新一次;
- 定义一个字典用来存大类,键对应代号,值对应分类;
局部功能代码如下:
结尾:
以上这篇python 解决动态的定义变量名,并给其赋值的方法(大数据处理)就是小编分享给大家的全部内容了。
最后多说一句,小编是一名python开发工程师,这里有我自己整理了一套最新的python系统学习教程,包括从基础的python脚本到web开发、爬虫、数据分析、数据可视化、机器学习等。想要这些资料的可以关注小编,并在后台私信小编:“07”即可领取。