gpt4 book ai didi

python - 文件 i/o 和二进制模式的含义

转载 作者:行者123 更新时间:2023-11-30 23:23:58 25 4
gpt4 key购买 nike

所以我想用python在redis中保存一些任意的数据。由于 redis 通过将其存储为字符串来支持这一点,因此我想我可以再次使用 python 读取日期并将其写入文件。起初这不起作用,因为我使用了 open() 的标准“r”和“w”模式。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"

最佳答案

非二进制模式用于让系统为您做一些额外的工作:

一些具体示例:

  • 阅读具有不同行结束样式的文本时(crlf、cr、lf)。例如,在 Windows 上读取 unix 样式文件时。
  • 在 Windows 上,\n 字符将转换为 \r\n
  • 读取输入时,各种选项(\r\n\r\n)将转换为正确的设置.
  • 如果文件以追加模式打开,并且有文件结束标记 (C-z)如果文件以追加模式打开,则会检查文件末尾并将其删除。

关于python - 文件 i/o 和二进制模式的含义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23716570/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com