[英]How to convert a Python library from Python2 to Python3
我有一個使用“PyOPC”庫( https://github.com/ibh-systems/pyopc )的代碼。 我通過在開頭和結尾添加()
修復所有print
語句。
但是當我安裝庫時,我收到了更多錯誤。
如:
File "c:\anaconda3\lib\site-packages\PyOPC-0.1-py3.7.egg\PyOPC\servers\esdsrv.py", line 90
def Read(self,(IPH,inOptions,outOptions)):
^
SyntaxError: invalid syntax
File "c:\anaconda3\lib\site-packages\PyOPC-0.1-py3.7.egg\PyOPC\utils.py", line 313
def print_options((ilist,Options)):
^
SyntaxError: invalid syntax
File "c:\anaconda3\lib\site-packages\PyOPC-0.1-py3.7.egg\PyOPC\XDAClient.py", line 46
except ZSI.FaultException, z:
^
SyntaxError: invalid syntax
File "c:\anaconda3\lib\site-packages\PyOPC-0.1-py3.7.egg\PyOPC\OPCContainers.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)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.