是否可以检查python源代码是否仅为一个版本(python 2或python 3)编写
我进行了一些源代码分析,需要知道源代码是否只针对一个版本(Python2或Python3)编写。理想情况下,不要同时启动运行时脚本并检查它是否引发异常。我不想检查安装了哪些运行时 也许我在寻找某种类型的linter,它测试典型的python 2代码,比如 打印“你好” 而不是 打印(“你好”) 这是我的问题,我读取的文件如下,例如:是否可以检查python源代码是否仅为一个版本(python 2或python 3)编写,python,Python,我进行了一些源代码分析,需要知道源代码是否只针对一个版本(Python2或Python3)编写。理想情况下,不要同时启动运行时脚本并检查它是否引发异常。我不想检查安装了哪些运行时 也许我在寻找某种类型的linter,它测试典型的python 2代码,比如 打印“你好” 而不是 打印(“你好”) 这是我的问题,我读取的文件如下,例如: for i in range(10): print(True) if (i % 2 == 1) else print(False) 它在Python3下运
for i in range(10):
print(True) if (i % 2 == 1) else print(False)
它在Python3下运行良好,并为python2引发了一个错误
print(True) if (i % 2 == 1) else print(False)
^
SyntaxError: invalid syntax
可能带有,但它被标记为已弃用
有没有解决这个问题的想法,或者有没有任何已知的linter告诉我代码是python2还是python3?或者使用两个运行时运行文件是我唯一的选择
谢谢您无法可靠地检测到代码仅为Python 3编写 如果代码使用
print
作为语句,您可以确定它只适用于Python 2。类似地,使用的代码除了Exception、target:
之外,只在Python 2上运行
但是可以编写多语言Python代码;将在Python2和Python3上运行的代码,使用<例如,code>from\uuuuuu future\uuuuu导入打印功能将允许您在Python 2上使用print()
功能
最好的办法是通过测试,并创建一系列启发式方法,对Python版本进行有根据的猜测
Python Future项目有一个可能在这里也有帮助的方法。编写了一些代码来处理这两种方法。如果顶部有一个
from\uuuuuu future\uuuuu import print\u函数
,print()
将对两个版本都有效。from\uuuu future\uuuuuuu import print\u函数对Python3本身有效吗?@lilezek:会的,这就是技术的全部要点。好的,我只为一个版本更改标题,不用担心,您只需将其编码为(“十六进制”),然后将其与映射到版本的魔法数字进行比较