【发布时间】:2017-03-08 19:00:24
【问题描述】:
我想知道是否可以从 python3 脚本执行 python2 脚本。
我有一个使用 py3 编写的文件,该文件必须执行用 py2 编写的遗留代码,以获取字典以在初始文件中进行处理。
py3 中调用上述 py2 脚本的行是
exec(open('python2script.py').read())
脚本在开始处理python2script.py 之前运行没有错误,此时它在与版本3 的第一个差异处崩溃。
【问题讨论】:
-
你能用
os.system('python python2script.py')吗?这相当于在命令行中发出带引号的命令。 -
exec自然会执行它在当前 (python 3) 解释器中接收到的所有内容。 -
如果
os.system不起作用,那么您可以考虑重写python2 脚本以使用__future__导入和更多python3 友好的语法。但是, exec(open(python2file).read()) 是一种非常笨拙的方法。首选方法是import python2file并运行其代码。 -
@Benjamin - 我想远离修改 py2 脚本,因为它目前被遗留代码用于初始化数据以进行处理(我从我的脚本 py3 中调用它) )。请参阅我对@daphtdazz 答案的评论,其可用性为
os.system('script.py')
标签: python python-2.7 python-3.x