哪个python模块包含文件对象方法?
虽然使用哪个python模块包含文件对象方法?,python,python-3.x,Python,Python 3.x,虽然使用help搜索大多数有明确help(module.method)安排的方法很简单,例如help(list.extend),但我无法确定如何在python的内置帮助函数中查找方法.readline() .readline属于哪个模块?如何在帮助中搜索.readline和相关方法 此外,是否有任何方法可以使用解释器来确定方法将来属于哪个模块?不要试图找到该模块。创建所需类的实例,然后调用该实例方法的帮助,它将为您找到正确的帮助信息。例如: >>> f = open('path
help
搜索大多数有明确help(module.method)
安排的方法很简单,例如help(list.extend)
,但我无法确定如何在python的内置帮助函数中查找方法.readline()
.readline
属于哪个模块?如何在帮助
中搜索.readline
和相关方法
此外,是否有任何方法可以使用解释器来确定方法将来属于哪个模块?不要试图找到该模块。创建所需类的实例,然后调用该实例方法的帮助,它将为您找到正确的帮助信息。例如:
>>> f = open('pathtosomefile')
>>> help(f.readline)
Help on built-in function readline:
readline(size=-1, /) method of _io.TextIOWrapper instance
Read until newline or EOF.
Returns an empty string if EOF is hit immediately.
x = open('some_file.txt', 'r')
help(x.readline)
在我的例子(Python3.7.1)中,它是在类型
\u io.TextIOWrapper
上定义的(公开为io.TextIOWrapper
,但是help
不知道),但是记住这种事情并没有多大帮助。知道如何通过反省你所关心的具体事情来解决这个问题更为广泛。在这种特殊情况下,不尝试猜测是非常重要的,因为open
函数可以根据提供的参数返回几个不同的类,每个类都有不同的方法,包括io.BufferedReader
,io.BufferedWriter
,io.BufferedRandom
和io.FileIO
,每个都有自己版本的readline
方法(尽管为了一致性起见,它们都共享一个类似的界面)。来自帮助(打开)
的文本:
另见本节
因此,您正在查看TextIOWrapper
,BufferedReader
,BufferedWriter
,或BufferedRandom
。它们都有自己的类层次结构集,但只要说它们在某个点上共享了IOBase
超类就足够了——这就是声明函数readline()
和readlines()
的地方。当然,每个子类针对其特定模式实现这些函数的方式都不同——如果您这样做的话
help(_io.TextIOWrapper.readline)
你应该得到你要找的文件
特别是,无论您需要哪个版本的
readline
,您都很难访问文档,因为您不必费心弄清楚它是哪个类。实际上,您也可以对对象调用帮助。如果您正在处理一个特定的文件对象,那么您可以旋转一个终端,实例化它,然后将它传递给help()
,它将向您显示离曲面最近的任何接口。例如:
>>> f = open('pathtosomefile')
>>> help(f.readline)
Help on built-in function readline:
readline(size=-1, /) method of _io.TextIOWrapper instance
Read until newline or EOF.
Returns an empty string if EOF is hit immediately.
x = open('some_file.txt', 'r')
help(x.readline)
该函数可以存在于任意数量的模块(或类)中。这就是模块的全部要点:它们提供了一个可以存在事物的名称空间。您想要的文档取决于您自己的具体需求。你想在上面调用什么呢?可能你想要@wim提到的io.TextIOWrapper.readlineAs,对open('myfile.txt')
的常规调用的类型
就是该类的一个实例。注意:list.extend
不是模块.method
的一个例子<代码>列表
是内置类型,不是模块。此外,从技术上讲,在模块上直接找到的几乎所有东西都是函数,而不是方法(“方法”是在类上定义的函数,因此可以通过类实例访问;模块上的顶级函数通常不是类的一部分)。