将 python2 'file' 类的子类移植到 python3

2023-11-30

我有一个遗留代码调用class TiffFile(file)。 python3的调用方式是什么?

我尝试在 python2 中替换以下内容:

class TiffFile(file):
    def __init__(self, path):
        file.__init__(self, path, 'r+b')

在python3中是这样的:

class TiffFile(RawIOBase):
    def __init__(self, path):
        super(TiffFile, self).__init__(path, 'r+b')

但现在我得到了TypeError: object.__init__() takes no parameters


RawIOBase.__init__不接受任何参数,这就是你的错误所在。

Your TiffFile实现也继承了file这不是一个类,而是一个构造函数,所以你的 Python 2 实现是不惯用的,有人甚至可能声称它是错误的。你应该使用open代替file,并且在类上下文中您应该使用io输入和输出的模块类。

您可以使用open返回一个文件对象以供您使用file在Python 2.7中或者你可以使用io.FileIO同时Python 2 and Python 3用于访问文件流,就像您所做的那样open.

所以你的实现会更像是:

import io

class TiffFile(io.FileIO):
    def __init__(self, name, mode='r+b', *args, **kwargs):
        super(TiffFile, self).__init__(name, mode, *args, **kwargs)

这应该适用于当前支持的所有 Python 版本,并允许您使用与旧实现相同的接口,同时更加正确和可移植。

你真的在使用吗r+b在 Windows 上以读写二进制模式打开文件?你可能应该使用rb模式,如果您不写入文件,而只是读取 TIFF 数据。rb将以二进制模式打开文件以供只读。所附的+将文件设置为以读写模式打开。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将 python2 'file' 类的子类移植到 python3 的相关文章

  • 如何以跨系统的方式将进程仅绑定到物理核心?

    我在用着每次将线程数加倍的项目 https github com ConsenSys mythril pull 1372 files 您会增加 40 到 60 的开销 由于超线程将性能最多提高了 30 这意味着程序在超线程系统上的运行速度比
  • 将字节字符串转换为 Base64 编码的字符串(输出不是字节字符串)

    我想知道是否可以将从读取文件中获得的字节字符串转换为字符串 所以type output str 到目前为止我在谷歌上找到的都是这样的答案如何对 PNG 图像进行 Base 64 编码以便在 CSS 文件的 data uri 中使用 http
  • 如何在 Django 中创建多选框?

    我正在尝试创建多选框字段来自姜戈选择 2 https github com applegrew django select2库如下图所示 我使用了下一个代码 但它返回简单的选择多个小部件 我想我忘了补充一些东西 我的错误在哪里 有人可以告诉
  • 在 python 中使用 graphviz 从 DOT 文件绘制有向图

    这是API参考 http graphviz readthedocs io en latest api html for graphviz 我找不到任何从现有的生成有向图的方法dot源文件 方法如render and view保存在新文件中
  • 猴子修补@property

    是否有可能对 a 的值进行猴子修补 property我无法控制的类的实例 class Foo property def bar self return here be dragons f Foo print f bar baz f bar
  • matplotlib - 模块“sip”没有属性“setapi”

    我刚刚设置了带有所有 Python 扩展的 VS Code 通过 Anaconda Python 版本为 3 8 3 解释器是 venv 当我运行这段代码时 import matplotlib pyplot as plt 错误显示 Exce
  • django 2.0 中的错误 404 静态文件

    我试图在 django 2 0 中找到我的所有静态文件 但是当我只运行服务器时 我收到 404 错误 这是我的设置代码 STATIC URL static STATIC ROOT var www example com static STA
  • AttributeError:“MainRouter”对象没有属性“_disabled_count”

    我正在创建一个 kivy 应用程序 其中我使用了显示此错误的路由器 AttributeError MainRouter 对象没有属性 disabled count 有什么解决办法吗 我也得到了这个 但使用 super 修复了它 使用以下命令
  • 测试由于浮点限制而导致的舍入误差

    我最近了解到浮点的主要限制之一 事实上 某些数字无法以二进制正确表示 因此可能给出的答案对于您的目的来说不够准确 知道round 2 675 2 and round 2 665 2 两者相等2 67我尝试编写一些代码来给出具有此属性的数字列
  • 文件夹包含在 tar.gz 中,而不是在wheel、setuptools build 中

    自动发现setuptools build meta将不应包含的顶级文件夹包含到 tarball 中 我们试图建立一个蟒蛇包 https gitlab com octopus code postopus with python3 m buil
  • Windows 中的信号处理

    在Windows中 我试图创建一个等待SIGINT信号的python进程 当它收到SIGINT时 我希望它只打印一条消息并等待SIGINT的另一次出现 所以我使用了信号处理程序 这是我的 signal receiver py 代码 impo
  • 如何查找另一列的不同行中具有多个值的列值的总长度

    有没有办法找到同时有Apple和Strawberry的ID 然后求总长度 和只有苹果的ID 和只有草莓的IDS df ID Fruit 0 ABC Apple lt ABC has Apple and Strawberry 1 ABC St
  • 默认可变参数的惯用方式

    在 python 中 如果直接将可变类型设置为默认参数 则会出现众所周知的边缘情况 def foo x return x y foo y append 1 print foo 通常的解决方法是将参数默认为None然后将其放入体内 然而 有
  • 多行 x 刻度标签

    我正在尝试制作类似于此 Excel 示例的图 我想知道 x 刻度标签上是否有第二层 例如 5 年统计摘要 我知道我可以使用制作多行刻度标签 n但我希望能够独立地转换这两个级别 这很接近 fig plt figure figsize 8 4
  • 导入错误:无法导入名称“IntEnum”

    我正在尝试安装upstox 这是一个用于连接市场数据的 Python API 我无法在Python3 5上安装它 我的配置是Python 3 5 3 v3 5 3 1880cb95a742 Jan 16 2017 15 51 26 MSC
  • 未找到类型:'(架构,http://www.w3.org/2001/XMLSchema,)

    我正在使用 suds client 来提供肥皂 wsdl 服务 当我尝试为肥皂服务设置肥皂水客户端时 我收到 类型未找到 错误 我到处寻找 有许多未解答的问题具有相同的错误 我将链接添加为问题1 https stackoverflow co
  • pytest 在导入时找不到模块,但代码运行良好

    目标是为使用 Cython 的 Python3 项目使用 pytest 单元测试框架 这不是即插即用的事情 因为默认情况下 pytest 无法导入 Cython 模块 也就是说 从 Cython pyx 模块导入时出现以下错误 在我的例子中
  • 带括号的上下文管理器

    我试图了解新的新内容带括号的上下文管理器Python 3 10 中的功能 新功能中的顶部项目here https docs python org 3 10 whatsnew 3 10 html 我的测试示例是尝试编写 with open f
  • 使用sklearn进行多标签特征选择

    我希望使用 sklearn 对多标签数据集执行特征选择 我想要获得最终的功能集across标签 然后我将在另一个机器学习包中使用它 我打算使用我看到的方法here https stackoverflow com questions 1640
  • 从 C 线程调用 Python 代码

    我对从 C 或 C 线程调用 Python 代码时如何确保线程安全感到非常困惑 The Python 文档 http docs python org c api init html non python created threads似乎是

随机推荐

  • Android Studio:新项目与新模块

    Android Studio 使用的概念modules 而其他 IDE 例如 Eclipse 则使用projects 然而ASFile菜单可以选择创建一个New Module以及ASAnew Project 如果有的话 这两者之间有什么区别
  • 在 Big Sur 上使用 perlbrew 安装 perl 时出错

    我正在尝试使用 perlbrew 在 macOS 环境中安装 perl 版本 5 33 4 我无法理解为什么它在安装过程中失败 我开始使用安装 perlbrew curl L https install perlbrew pl bash 然
  • MVC4 中表的 Foreach 循环

    我正在使用 C 在 MVC4 中完成我的项目 我的模型中有一个 IEnumerable 列表 我使用以下循环来列出我的观点 table tbody foreach var item in Model tr td Rtn item Mem N
  • 替换单个换行符,保留多个[重复]

    这个问题在这里已经有答案了 我正在解析一个文本文件 并希望删除所有段落内换行符 同时实际上保留形成新段落的双换行符 例如 这是我的第一首诗 n没有意义 n它应该走多远 没有人知道 n n这里是一秒钟 n那并不长 再见 n n 打印出来后 应
  • 如何修复:类文件 com/sun/org/apache/xerces/internal/impl/xs/XMLSchemaValidator 中的未知常量标记 32

    今天早些时候我遇到了以下异常 Unknown constant tag 32 in class file com sun org apache xerces internal impl xs XMLSchemaValidator 我没有做任
  • 有没有办法从堆栈溢出下载所有问题和答案?

    我有兴趣查看网站使用情况 问题类型和堆栈溢出的答案 有没有办法下载全部内容 我考虑过使用 beautiful soup 或类似的网页抓取作为一种选择 但我认为有如此多的专家用户 可以通过 API 轻松获得信息 是的 正如你猜的那样 有一个
  • Quartz.NET 运行作业自行重新安排?

    我完全以编程方式创建了一个 Quartz NET 作业 没有配置文件等 它按计划运行良好 该作业使用 cron 字符串初始化 每 5 分钟运行一次 我想让作业根据环境更改其自身的计划 例如 随着时间的推移会发生错误 因此 cron 应该更改
  • PublishJMS 处理器无法将消息写入 IBM Websphere MQ

    我在通过 PublishJMS 处理器将消息发布到 IBM Websphere MQ 队列时遇到问题 配置PublishJMS处理器和JMS控制器服务 我已经验证MQ连接没有问题 我相信我需要在 PublishJMS 或控制器服务中设置一些
  • 当我选择 UITableViewCell 时,我的视图控制器标签是后面的操作

    我有一个带有表视图的视图控制器 我还有一种方法 当选择表视图的单元格之一时 该方法应该推送到新的视图控制器 新的视图控制器包含一个标签 我希望该标签显示所选单元格内容的全文 目前 当选择单元格时 先前选择的单元格的内容会显示在标签上 这是我
  • 如何在 Haskell 中向 Functor 实例声明添加类约束?

    我定义了以下数据类型 data Probability a PD mass a Ratio Int 现在我想写它是一个实例Functor collect Eq a Num b gt a b gt a b collect al map col
  • 短文本,PHP

    我得到了这个功能 function shorter text chars limit if strlen text gt chars limit return substr text 0 strrpos substr text 0 char
  • Firebase:添加新子项

    当我的应用程序启动时 我会对 Firebase 进行初始提取以提取所有数据 当我稍后将数据添加到 Firebase 时 我只希望它获取已添加的新子项 我目前正在实现这样的目标 有没有更好的方法或内置方法可以在 Firebase 中执行此操作
  • 相对源绑定 Xamarin

    我的问题是视单元 由于它属于 IssueModel 类 所以找不到 OnDelete 命令 我尝试更改 Listview 的绑定上下文 但这不会改变除上述绑定之外的任何内容 有什么方法可以更改视单元的绑定上下文 这样我就不必将命令放入 Is
  • 更新语句:错误:目标表必须是等值连接谓词的一部分

    当我尝试更新表 1 中与表 2 中的列类似的列时 出现此错误 目标表必须是等值连接谓词的一部分 update test set category t1 category from category type t1 test t2 where
  • 焦点损失实施

    In the paper引入焦点损失后 他们指出损失函数的公式如下 Where 我在另一位作者的 Github 页面上找到了它的实现 他在自己的项目中使用了它paper 我在我拥有的分割问题数据集上尝试了该函数 它似乎工作得很好 下面是实现
  • Android 上的 HTTP POST

    我想对 php 脚本创建一个简单的 HTTPRequest 并且我尝试制作最基本的应用程序来使功能正常工作 我想测试我的应用程序是否正在发送我提供给它的数据 因此我已将 Android 应用程序发送到服务器 并且该服务器应该向我发送我放入应
  • javafx 重新计算父/节点边界时如何修复 IndexOutOfBounds 异常

    我正在制作 javafx gui 应用程序 游戏 需要同时更新角色视图 每个移动周期我都会更新角色的 ImageView 如下所示 if inBounds direction Collisions collides newHitbox hi
  • 自动装配工厂创建的实例的 Spring 方法是什么?

    我有一个控制器 它应该创建版本相关的实例 当前未实现 Controller public class ReportController Autowired private ReportCompFactory reportCompFactor
  • 从脚本标签访问车把属性

    在车把模板中 我可以访问脚本标记内的车把参数吗 该模板是从调用的express with response render template list 1 2 3 您可以在 html 中使用包含所需值的隐藏输入 然后在脚本标记中使用 docu
  • 将 python2 'file' 类的子类移植到 python3

    我有一个遗留代码调用class TiffFile file python3的调用方式是什么 我尝试在 python2 中替换以下内容 class TiffFile file def init self path file init self