文件对象有文档吗?

9
这可能是一个非常愚蠢的问题,但我实在找不到Python 3文件对象API的文档。像open或sys.stdin这样使用或返回文件对象的Python文档都有指向词汇表的链接,其中包含高级介绍。它没有列出此类对象公开的函数,我不知道可以用它们做什么。我尝试过搜索文件对象文档,但搜索引擎似乎不理解我在寻找什么。我是Python新手,但并不是编程方面的新手。直到现在,我使用对象的方案是查找完整的API参考,看看它能做什么,然后选择在我的代码中使用的方法。在Python世界中,这种思维方式是错误的吗?有哪些替代方案?

2
@primusa 这是C API文档,而不是纯Python文档。 - internet_user
有一个名为TextIOBase的类,用于处理文本文件,例如sys.stdin。确实,我需要从sys.stdin跟踪几个链接才能找到它。 - Gassa
并且有open - Dan D.
open将根据使用的模式之一返回此处记录的对象 - juanpa.arrivillaga
那么 TextIOBase 是文件对象 API 的完整定义吗?输入/输出教程是否描述了文件对象提供的所有方法?我是认真在问。 - CodeSandwich
2
不,正如其他人所说,文件对象没有一个单独的类,它取决于打开模式。要列出任何对象可用的方法,请执行“dir(object-name)”。 - cdarke
1个回答

12

open返回一个文件对象,该对象的类型取决于模式。来自open文档:

使用open()函数打开文本模式('w','r','wt','rt'等)中的文件时,返回的文件对象类型取决于模式。它返回io.TextIOBase的子类(具体来说是io.TextIOWrapper)。当用于带缓冲区的二进制模式打开文件时,返回的类是io.BufferedIOBase的子类。确切的类因模式而异:在读取二进制模式时,它返回io.BufferedReader;在写入二进制和追加二进制模式时,它返回io.BufferedWriter,在读/写模式下,它返回io.BufferedRandom。当禁用缓冲时,返回原始流io.RawIOBase的子类io.FileIO。

由于返回的类型会有所不同,因此请使用您需要帮助的模式打开文件对象并要求其提供帮助:

>>> f = open('xx','w')
>>> help(f)

Help on TextIOWrapper object:

class TextIOWrapper(_TextIOBase)
 |  Character and line based layer over a BufferedIOBase object, buffer.
 |
 : etc...

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接