我有以下代码:
>>> import io
>>> b = io.BytesIO(b"Hello World")
>>> f = io.TextIOWrapper(b)
>>> f.fileno()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
io.UnsupportedOperation: fileno
Run Code Online (Sandbox Code Playgroud)
但是,当我加载文件时,有一个fileno属性:
>>> f = open("test.py")
>>> f.fileno()
3
Run Code Online (Sandbox Code Playgroud)
有没有办法fileno为第一种情况创建属性,即我将BytesIO对象强制转换为TextIOWrapper对象?
嗯,fileno不可用,因为没有文件。
该fileno()方法返回一个整数,表示打开的文件在操作系统进程相关文件表中的位置。如果您实际上没有打开文件,操作系统不会为您提供文件号。
程序的标准输入、输出和错误流(使用 读取input和写入的流print)编号为0、1和2。随后打开的文件通常由系统给出序号。
这无法可靠地伪造:fileno()当没有实际文件支持该对象时,您返回的任何内容都是谎言。这就是为什么实施选择筹集UnsupportedOperation。没有回报是有意义的,除了也许None。
fileno()如果绝对有必要为字符串内容提供 a ,则可以这样做:
read+write但是,必须有更好的设计,不会强迫您使用此解决方法。
| 归档时间: |
|
| 查看次数: |
2138 次 |
| 最近记录: |