所以我想用python在redis中保存一些任意数据。由于redis通过将其存储为字符串来支持这一点,我认为我可以再次使用python读取日期并将其写入文件。起初这没有用,因为我使用了标准的' r'和' w' open()模式。 Python确实说他们是平等的。
我将其更改为' rb'和' wb'它工作,但为什么非二进制读或写以某种方式改变数据?无论如何它的重要性是什么?
这里有一些可行的代码,但只需将文件模式更改为非二进制文件并观察testfile_read.zip的更改。你确实需要redis,使用pip install redis轻松安装
import redis
import os.path
version=1.0
path='testfile.zip'
r_server=redis.Redis("127.0.0.1")
fp = open(path,'rb')
test=fp.read()
fp.close()
r_server.hset('testfile',version,test)
r_server.hset('testfile','currver',version)
test2=r_server.hget('testfile',version)
if test==test2:
print "read from file and read from redis are the same"
else:
print "read from file and read from redis are the NOT!! same"
fp2 = open("testfile_read.zip",'wb')
fp2.write(test2)
fp2.close()
fp3 = open("testfile_read.zip",'rb')
test3=fp3.read()
fp3.close()
if test2==test3:
print "redis is equal to written file"
else:
print "redis is NOT!!! equal to written file"
答案 0 :(得分:2)
非二进制模式用于让系统为您做一些额外的工作:
一些具体的例子:
\n
字符将在Windows上转换为\r\n
。 \r
,\n
或\r\n
)将转换为正确的设置。答案 1 :(得分:1)
具有非二进制模式的原因是让文件调用为您执行一些数据操作(例如,转换行结尾)。这就是为什么你不必担心文本文件的来源;文件例程会隐藏这些细节。