【问题标题】:What does a file-like object's `write` method return?类文件对象的 `write` 方法返回什么?
【发布时间】:2019-10-17 02:27:32
【问题描述】:

Python 的内置 open 函数返回一个“类文件对象”。这些文件对象也可以通过其他方式获取,可能并不真正代表文件。

我一直无法找到我想知道的关于这些的内容。

https://docs.python.org/3/glossary.html#term-file-object 声明所有文件对象都有一个共同点:它们公开“面向文件的 API”。但是我找不到关于这个 api 的任何文档。

文件对象的write 方法似乎返回一个整数,但它代表什么?返回值是否保证为整数?文件对象保证有哪些方法和属性?

【问题讨论】:

  • 我相信它会返回写入的字节数,您可以查看write 的文档进行验证。但我不知道任何专门针对通用类文件对象的文档。
  • 我在 Python/C API 参考手册的任何地方都找不到write 的任何文档。但是,在您发表评论后,我决定再试一次,这次浏览了 The Python Tutorial。我能够在 Python 教程中找到一些关于 write 及其返回内容的文档,这里是:docs.python.org/3/tutorial/…。 (它说它“返回写入的字符数”。)

标签: python file io


【解决方案1】:

人们不太可能使用write 的返回值,如果任何特定的类似文件的对象刚刚返回None,我不会感到惊讶。也就是说,有一些类似于规范的东西。

类文件对象的方法应提供的行为记录在抽象基类下的io module docs 中。虽然许多类文件对象不会是这些 ABC 的实例,并且许多类文件对象不会提供最近的 ABC 中的所有方法,但它们提供的方法应该与 ABC 文档匹配。

对于二进制文件类对象,write 应返回写入的字节数,如RawIOBase.write 中所述。

对于类似文本文件的对象,write 应返回写入的字符数,如 TextIOBase.write 中所述。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-06-29
    • 2012-05-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-27
    相关资源
    最近更新 更多