代码从Python2.6更改为3.x

2024-10-01 09:35:43 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图让pywbem在python3.2中工作(它在2.6中可以正常工作),但是在mof中这部分代码的构建失败了_编译器.py公司名称:

  File "pywbem-0.7.0\mof_compiler.py", line 1341
    print s
          ^
SyntaxError: invalid syntax

它是一个宏,定义如下:

^{pr2}$

我不明白为什么这是无效的,请解释一下如何在python3.2中这样做。在

注意:我对Python几乎没有经验。在

PS:我已经对3.2的代码做了一些小的修改,比如 改变

except CIMError, ce:

except CIMError as ce:

基于Lennart Regebro的回答,我发现了一些其他的变化(把它们放在这里,因为它可能对其他人有用)。在

exec "import %s as lextab" % tabfile -> exec ("import %s as lextab" % tabfile)
raise ValueError,"Expected a string" -> raise ValueError("Expected a string")

Tags: 代码pyimportasexecraiseexpectedce
3条回答

很抱歉回答了一个老问题,但我最近想让PyWBEM在python3下运行,所以我对它进行了分叉,进行了必要的更改,并从中删除了3.x系列的python2.x依赖项(M2Crypto)。以下是来自GitHub的源代码:

https://github.com/deejross/python3-pywbem

请注意,它支持Python2.6、2.7和3.4+

这不是宏,而是函数定义,在python3中print语句现在是一个函数。所以请改为print(s)。在

Python2和Python3之间的更改列表如下:http://docs.python.org/release/3.0.1/whatsnew/3.0.html 它不是那么容易阅读,但我不知道是否有更好的一个在网上(虽然有书)。在

如果您打算使用python3,那么您可能会得到一本python3书籍。现在有几个人出来了。或者至少参考Python3文档:http://docs.python.org/release/3.2/它有一个不错的教程。在

python3中最明显的变化之一是print不再是一个语句,而是一个函数,因此必须使用括号来调用该函数。print(s)

另外,如果您有Python2代码,只需使用2to3,它可以将Python2转换为python3的源代码到源代码,它可以像上述问题一样修复大部分语法级别的更改。2to3与python3二进制文件一起安装。在

相关问题 更多 >