我有其他人编写的此Python工具来刷新某个微控制器,但他为Python 2.6编写了该工具,而我使用的是Python 3.3。
因此,我移植了其中的大部分内容,但此行出现了问题:
data = map(lambda c: ord(c), file(args[0], 'rb').read())
该file
函数在Python 3中不存在,必须替换为open
。但是然后,data
作为参数获取的函数将导致异常:
TypeError: object of type 'map' has no len()
但是到目前为止,我在文档中看到的是,map
必须将可迭代类型与一个大可迭代类型连接在一起,我是否缺少某些东西?
我要怎么做才能将其移植到Python 3?
在Python
3中,map
返回一个迭代器。如果您的函数需要一个列表,则必须显式转换迭代器,如下所示:
data = list(map(...))
我们可以像这样简单地做
with open(args[0], "rb") as input_file:
data = list(input_file.read())
rb
指以二进制模式读取。因此,它实际上返回字节。因此,我们只需要将它们转换为列表即可。
引用open
的文档,
Python区分二进制I / O和文本I / O。以二进制模式打开的文件(包括mode参数中的’b’)以字节对象的形式返回内容,而无需进行任何解码。
问题内容: 我在python 3.3.4中遇到“解码”方法的问题。这是我的代码: 但是我无法解码此问题的代码: 你有什么想法?谢谢 问题答案: 一种 编码 字符串,另一种 解码 字节。 您应该从文件中读取字节并对其进行解码: 幸运的是,有一个编码参数使操作变得简单:
问题内容: 我对Python 3有问题。我有Python 2.7代码,此刻我正在尝试对其进行更新。我得到错误: TypeError:“地图”类型的对象没有len() 在这一部分: 在这样初始化之前: 那么,有人可以解释我该怎么做吗? (编辑:以前,此代码示例是错误的,因为它使用代替。现在已更新。) 问题答案: 在Python 3中,返回的地图对象不是: 您可以将其转换为列表,然后从那里获取长度:
问题内容: 我想转换火花数据框架以使用以下代码添加: 详细的错误消息是: 有人知道我在这里做错了吗?谢谢! 问题答案: 您无法使用数据框,但可以将数据框转换为RDD并通过映射将其映射。在Spark 2.0之前,别名为。使用Spark 2.0,您必须先明确调用。
这个问题又来了,请耐心听我说。 我在Ubuntu 16.04上,我试图用pip3安装Kmodes,但我遇到了这个错误。我尝试从零开始删除pip/pip3并重新安装,但没有解决问题。 我找到了以前关于同一问题的问题,但它没有像那样解决这个问题。 这个问题的解决方案是什么,我能做些什么来解决它?
Selenium/Python自动化新手。我在自动注册表单时被阻止。下拉列表是必需的元素,但我收到以下错误。。。 AttributeError:“str”对象没有属性“tag_name” 我把我的代码贴在下面,但是在网上找不到任何答案来解释为什么会这样。非常感谢任何/所有的帮助。 错误来自sel=Select('teamElement')行。
问题内容: 输出为: 这种“获取”方法的行为如何?由于m1和M2都具有相同的值,并且我没有重写hashcode(),因此将调用对象类的equals()方法吗? 这样对吗 ? 没有哈希码方法,因此JVM无法查看对象m1和m2是否包含不同的值 没有覆盖equals的方法,因此调用了Object类的equals(),并且由于两个对象都不相同,因此上面的代码可以很好地工作,而无需m2替换m1的值。 问题答