如何将 Python 库从 Python2 转换为 Python3



我有一个使用"PyOPC"库(https://github.com/ibh-systems/pyopc(的代码。我通过在开头和结尾添加()来修复所有print语句。

但是当我安装库时,我遇到了更多错误。

如:

File "c:anaconda3libsite-packagesPyOPC-0.1-py3.7.eggPyOPCserversesdsrv.py", line 90
def Read(self,(IPH,inOptions,outOptions)):
^
SyntaxError: invalid syntax

File "c:anaconda3libsite-packagesPyOPC-0.1-py3.7.eggPyOPCutils.py", line 313
def print_options((ilist,Options)):
^
SyntaxError: invalid syntax

File "c:anaconda3libsite-packagesPyOPC-0.1-py3.7.eggPyOPCXDAClient.py", line 46
except ZSI.FaultException, z:
^
SyntaxError: invalid syntax

File "c:anaconda3libsite-packagesPyOPC-0.1-py3.7.eggPyOPCOPCContainers.py", line 257
raise AttributeError,'Unknown complex type %s for filling'%buf
^
SyntaxError: invalid syntax

有什么简单的方法可以修复它们吗?我列出了四个主要错误,有人可以告诉我 Python3 中的正确语法吗?

参数解包已被删除...像这样的事情

def foo(x, (y, z)):
...

应改为

def foo(x, _yz):
(y, z) = _yz
...

这个在线工具可能会帮助 https://www.pythonconverter.com/这是基于 https://docs.python.org/2/library/2to3.html

编辑:

一些变化

1( 打印函数语法已从print "Message"更改为print("Message")
2(xrange替换为range
3( 异常引发语法raise IOError, "file error"现在raise IOError("file error")
4( 异常处理是

except NameError, err:
print err, '--> our error message'

现在是

except NameError as err:
print(err, '--> our error message')

5(my_generator.next()替换为next(my_generator)
6(input()现在总是返回一个字符串

更多更改可以在 https://sebastianraschka.com/Articles/2014_python_2_3_key_diff.html

def Read(self,IPH_and_inOptions_and_outOptions):
except ZSI.FaultException as z:
raise AttributeError('Unknown complex type %s for filling'%buf)

最新更新