Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/335.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/293.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
是否可以检查python源代码是否仅为一个版本(python 2或python 3)编写_Python - Fatal编程技术网

是否可以检查python源代码是否仅为一个版本(python 2或python 3)编写

是否可以检查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下运

我进行了一些源代码分析,需要知道源代码是否只针对一个版本(Python2或Python3)编写。理想情况下,不要同时启动运行时脚本并检查它是否引发异常。我不想检查安装了哪些运行时

也许我在寻找某种类型的linter,它测试典型的python 2代码,比如

打印“你好”

而不是

打印(“你好”)

这是我的问题,我读取的文件如下,例如:

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:会的,这就是技术的全部要点。好的,我只为一个版本更改标题,不用担心,您只需将其编码为(“十六进制”),然后将其与映射到版本的魔法数字进行比较