我试过下面的代码。f属于_io.TextIOWrapper类型,但找不到有关此类型的任何帮助信息。但确实存在另一种类似的类型。

>>> f=open("c:\setup.log","r")
>>> type(f)
<class '_io.TextIOWrapper'>
>>> help(_io.TextIOWrapper)
Traceback (most recent call last):
  File "<pyshell#204>", line 1, in <module>
    help(_io.TextIOWrapper)
NameError: name '_io' is not defined
>>> help(io.TextIOWrapper)
Help on class TextIOWrapper in module io:

我的问题是:
如果未定义名称io.TextIOWrapper,我如何使用它?
_io_io模块有什么区别?

最佳答案

_io模块提供io模块内部使用的c代码。它的来源可以找到here。实际上,您可以分别导入io_io

>>> import _io
>>> import io
>>> _io
<module 'io' (built-in)>  # The fact that this says io instead of _io is a bug (Issue 18602)
>>> io
<module 'io' from '/usr/lib/python3.4/io.py'>
>>> _io.TextIOWrapper
<type '_io.TextIOWrapper'>

这种模式(c-code formodulename_modulename中提供)实际上用于多个模块-multiprocessing/_multiprocessingcsv/_csv等,基本上所有的情况下,一个模块都有一个用c编写的组件。

07-26 06:24