gpt4 book ai didi

python - 在 Python 2/3 中将 float 打印到 io.StringIO

转载 作者:太空宇宙 更新时间:2023-11-03 16:42:15 25 4
gpt4 key购买 nike

我正在尝试编写一个可以在 Python 2.7 和 Python 3.* 中运行的 Python 程序。我有一个使用 StringIO 的情况,并根据 Python-Future's cheatsheet on StringIO ,我所要做的就是使用 Python 3 风格的 io 模块。

问题是我正在将floats打印到此StringIO:

from __future__ import print_function
from io import StringIO

with StringIO() as file:
print(1.0, file=file)

这会导致

TypeError: string argument expected, got 'str'

当我将 1.0 替换为 u"AAAA"(或启用 unicode_literals"AAAA")时,效果很好。

我尝试过的替代方案:

  • BytesIO。我无法再打印,因为“unicode 不支持缓冲区接口(interface)”。
  • "{:f}".format(...) 每个 float。这是可能的,但很麻烦。
  • file.write(...) 而不是 print(..., file=file)。这可行,但此时,我不明白 print() 有什么用了。

还有其他选择吗?

最佳答案

这就是我处理这个问题的方法:

import sys

if sys.version_info[0] == 2: # Not named on 2.6
from __future__ import print_function
from StringIO import StringIO
else:
from io import StringIO

顺便说一下,这破坏了 PEP008(import 应该位于文件顶部),但我个人认为这是合理的。

关于python - 在 Python 2/3 中将 float 打印到 io.StringIO,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36698082/

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