gpt4 book ai didi

python - 如何在不知道编码的情况下将字节写入 Python 3 中的文件?

转载 作者:IT老高 更新时间:2023-10-28 20:37:57 24 4
gpt4 key购买 nike

在带有“类文件”对象的 Python 2.x 中:

sys.stdout.write(bytes_)
tempfile.TemporaryFile().write(bytes_)
open('filename', 'wb').write(bytes_)
StringIO().write(bytes_)

如何在 Python 3 中做同样的事情?

如何编写与此 Python 2.x 代码等效的代码:

def write(file_, bytes_):
file_.write(bytes_)

注意:sys.stdout 在语义上并不总是文本流。有时将其视为字节流可能会有所帮助。例如,make encrypted archive of dir/ on remote machine :

tar -c dir/ | gzip | gpg -c | ssh user@remote 'dd of=dir.tar.gz.gpg'

在这种情况下使用 Unicode 是没有意义的。

最佳答案

这是使用对字节而不是字符串进行操作的 API 的问题。

sys.stdout.buffer.write(bytes_)

作为 docs解释一下,你也可以detach流,所以它们默认是二进制的。

这会访问底层字节缓冲区。

tempfile.TemporaryFile().write(bytes_)

这已经是一个字节 API。

open('filename', 'wb').write(bytes_)

正如您对“b”所期望的那样,这是一个字节 API。

from io import BytesIO
BytesIO().write(bytes_)

BytesIO 是等效于 StringIO 的字节。

编辑:write 将只适用于任何 binary 类文件对象。所以一般的解决办法就是找到合适的API。

关于python - 如何在不知道编码的情况下将字节写入 Python 3 中的文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4290716/

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