Python 读取 csv 文件存到 redis

2017-07-26 18:28:20 +08:00
 shallyy

很简单的需求 找了个轮子 愣是没做好 https://codereview.stackexchange.com/a/78380 我的 csv 只有一列 应该怎么用...

2354 次点击
所在节点    问与答
5 条回复
binjjam
2017-07-26 21:46:21 +08:00
需求很简单,但是你没写啊老哥。比如你是要整个 csv 作为一个字符串存到 redis 里,下次整个取出来;或者说把每行当成一个列表的元素,把 csv 塞到 redis 的 list 里面。
shallyy
2017-07-27 09:11:06 +08:00
@binjjam 我是想把每行当成一个列表 请问该怎么做
binjjam
2017-07-27 13:21:08 +08:00
@shallyy
我觉得还是给下 CSV 内容的部分示例,以及需要处理成什么样
比如有个单列的 CSV 文件,内容大概是
1.content1
2.content1
3.content1
4.content1
需要将每行存为 redis 的 list,虽然 CSV 是单列,但是每行文件是否要以什么分割符切割成多个项?还是单纯把每行存为 1 个只有单个元素的 list ?那么 list 的键名是啥?
像上述 CSV 内容如果单纯每行当成一个 redis 的 list


#coding=u8
import redis
REDIS_HOST = 'localhost'
REDIS_PASS = 'youpasswd' #如果没密码的话,这里是空字符串
REDIS_PORT = 6379
REDIS_DB = 0
redis_conn = redis.StrictRedis(host=REDIS_HOST, password=REDIS_PASS, port=REDIS_PORT, db=REDIS_DB)
cache_prefix = 'csv' #redis key 前缀

csv_file = '/path/to/file' #CSV 文件的位置
with open(csv_file) as workfile:
for line_num, line in enumerate(workfile, 1):
line = line.strip()
cache_key = '%s_%s' % (cache_prefix, line_num)
redis_conn.lpush(cache_key, line)

这样就把 csv 每行存到 redis 0 号 db 的 csv_行号里。但是这样做很奇怪。。。
上面代码没有考虑任何效率问题,文件不大的话就没有什么所谓
binjjam
2017-07-27 13:22:15 +08:00
shallyy
2017-07-27 14:10:59 +08:00
@binjjam 非常感谢 已经解决了 谢谢.

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/378161

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX