- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在编写实现类文件接口(interface)的类时,我们可以从 io
继承抽象基类之一。模块,例如 TextIOBase
,如图 Adapt an iterator to behave like a file-like object in Python .
另一方面,在类型注释中,我们应该使用派生自 typing.IO
的类。 (例如 TextIO
)来表示这样的对象,如 Type hint for a file or file-like object? 所示或 Type-checking issue with io.TextIOBase in a Union .
但是,这似乎不像我预期的那样工作:
import io
import sys
import typing
class MyIO(io.TextIOBase):
def write(self, text: str):
pass
def hello(f: typing.TextIO):
f.write('hello')
hello(sys.stdout) # type checks
hello(open('temp.txt', 'w')) # type checks
hello(MyIO()) # does not type check
在此代码上运行 mypy 时(使用 Python 3.7.3 和 mypy 0.910),我们得到
error: Argument 1 to "hello" has incompatible type "MyIO"; expected "TextIO"
MyIO
类被编写成被接受为类型
typing.TextIO
的函数参数(不只是使用
typing.cast(typing.TextIO, ...)
)?
typing.TextIO
作为基类是不可能的:class MyIO(typing.TextIO)
:error: Cannot instantiate abstract class "MyIO" with abstract attributes "__enter__", "__exit__", ... and "writelines" (15 methods suppressed)
class MyIO(io.TextIOBase, typing.TextIO):
:error: Definition of "readlines" in base class "IOBase" is incompatible with definition in base class "IO"
__new__
和注释 typing.TextIO
因为返回类型不起作用:def __new__(cls, *args, **kwargs) -> typing.TextIO:
return super().__new__(cls, *args, **kwargs)
结果是error: Incompatible return type for "__new__" (returns "TextIO", but must return a subtype of "MyIO")
error: Incompatible return value type (got "MyIO", expected "TextIO")
--python-version 3.8
或
3.9
或
3.10
然而,作为 mypy 的选项不会改变任何东西。
最佳答案
使用 io.StringIO
反而
import io
import sys
import typing
class MyIO(io.StringIO):
def write(self, text: str):
pass
def hello(f: typing.TextIO):
f.write("hello")
hello(sys.stdout) # type checks
hello(open("temp.txt", "w")) # type checks
hello(MyIO()) # type checks
关于python - 如何编写一个满足typing.TextIO 的类文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69570166/
在编写实现类文件接口(interface)的类时,我们可以从 io 继承抽象基类之一。模块,例如 TextIOBase ,如图 Adapt an iterator to behave like a f
我使用Eclipse IDE编写了以下测试程序 01 package Prog01Cal 02 03 import textio.TextIO; 04 05 public class Prog01Ca
我是 Java 新手。我正在阅读《Java v7 编程简介》一书,发现代码存在问题,如下所示: public class CreateProfile { public static void ma
我对 TextIO.putf 方法有疑问(该方法应该与 System.out.printf 具有相同的结果)。 这是给我带来问题的代码: for (int columns = 0; columns <
我正在处理一个使用 Google Cloud 中的 DataFlow 的两个管道的场景: 管道 A 以流模式运行,基于每小时窗口和一些分片,在 Google 存储中不断创建文件,如下所示: data.
我不明白如何使用TextIO的readFile(String Filename)有人可以解释一下如何读取外部文件吗? public static void readFile(String fileNa
我有一个管道步骤 block ,用于从 GCS 存储桶中的特定文件读取数据。代码如下所示: List filepaths = new ArrayList("filepath1", "filepath2
我正在尝试创建一个谷歌数据流模板,但我似乎找不到一种方法来做到这一点而不产生以下异常: WARNING: Size estimation of the source failed: RuntimeVa
我已经设置了一个管道。我必须解析数百个 *.gz 文件。因此 glob 工作得很好。 但我需要当前处理文件的原始名称,因为我想将结果文件命名为原始文件。 有人可以帮我吗? 这是我的代码。 @Defau
我试图了解如何在 vhdl 中读取文件,如果我打开一个文件,通读它,测试文件结尾,关闭文件然后重新打开该文件,然后再次开始读取它会从文件的开头? 非常感谢 最佳答案 向VHDL语言的权威寻求答案。 I
是否可以通过从 TextIO.Read 读入 PCollection 的行访问行号?对于这里的上下文,我正在处理一个 CSV 文件并且需要访问给定行的行号。 如果无法通过 TextIO.Read 使用
我想将过去 30 天的滚动窗口读入我的管道中,例如2017 年 1 月 15 日,我想读: > gs://bucket/20170115/* > gs://bucket/20170114/* >. >
我有一个 gcs 文件夹如下: gs:////dt=2017-12-01/part-0000.tsv /dt=2017-12-02/pa
我收到以下控制台日志,并且进程停止 com.google.cloud.dataflow.sdk.runners.DataflowPipelineRunner fromOptions INFO: Pip
在标准 ML 中,我有一个写入 BinIO.outstream 的函数。我希望它写入标准输出。 而TextIO结构有 stdOut的 TextIO.outstream类型,BinIO没有这样的变量,T
我找不到任何相关文档,所以我想知道如果输出文件已经存在(在 gs://存储桶中),会有什么行为? 谢谢,G 最佳答案 文件将被覆盖。这样做有几个动机: “类似报告”的用例(计算输入数据的摘要并将结果放
好的,大家。来自数据流新手的另一个数据流问题。 (这周刚开始玩它..) 我正在创建一个数据管道来接收产品名称列表并生成自动完成数据。数据处理部分似乎一切正常,但我遗漏了一些明显的东西,因为当我添加最后
TextIO.read()和 AvroIO.read() (以及其他一些 Beam IO)在读取扩展为大量文件(例如 1M 文件)的文件模式时,默认情况下在当前的 Apache Beam 运行程序中表
使用 TextIO.Read使用大量压缩文本文件(1000 多个文件,大小在 100MB 到 1.5GB 之间)进行转换时,有时会出现以下错误: java.util.zip.ZipException:
在 Apache Beam 2.0.0 中使用 session 窗口并通过 TextIO.write 写入文件时,通过调用 TextIO.write() 生成以下异常: java.lang.Illeg
我是一名优秀的程序员,十分优秀!