gpt4 book ai didi

python-3.x - 为什么我应该给 `savetxt` 一个以二进制而不是文本模式打开的文件?

转载 作者:行者123 更新时间:2023-12-05 01:11:59 26 4
gpt4 key购买 nike

我被下面的 numpy 咬了行为:

In [234]: savetxt(open('/tmp/a.dat', 'wt'), array([1, 2, 3]))
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-234-2adef92da877> in <module>()
----> 1 savetxt(open('/tmp/a.dat', 'wt'), array([1, 2, 3]))

/local/gerrit/python3.2/lib/python3.2/site-packages/numpy/lib/npyio.py in savetxt(fname, X, fmt, delimiter, newline)
1007 else:
1008 for row in X:
-> 1009 fh.write(asbytes(format % tuple(row) + newline))
1010 finally:
1011 if own_fh:

TypeError: must be str, not bytes

In [235]: savetxt(open('/tmp/a.dat', 'wb'), array([1, 2, 3]))
# success

我觉得这很奇怪。我正在尝试将我的数组保存到文本文件中。那我为什么要以二进制模式打开文件呢?

最佳答案

因为你的数据是字节(即二进制)数据。

出来的仍然是一个文本文件。别担心。 :-) “文本”文件被定义为仅包含人类可读文本的内容,而不是您打开它的模式。该模式只是在处理给定数据的方式上有所不同。

文本模式意味着它需要 Unicode 数据,它会为您将其编码为字节格式。二进制模式意味着它需要以字节为单位的数据,并且不会对其进行编码。

关于python-3.x - 为什么我应该给 `savetxt` 一个以二进制而不是文本模式打开的文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14437054/

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