如何写一个python脚本,可以同时执行 python3 和 Python2?

不管是在 Python2 还是在 Python3 中,我们可以通过以下方法得到关键字列表:

import keyword
keyword.kwlist

现在我们可以得到两个版本的 Python 的关键字,手工赋值

kw2= ['and', 'as', 'assert', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'exec', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'not', 'or', 'pass', 'print', 'raise', 'return', 'try', 'while', 'with', 'yield'] # Python2 关键字列表

kw3 = ['False', 'None', 'True', 'and', 'as', 'assert', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'nonlocal', 'not', 'or', 'pass', 'raise', 'return', 'try', 'while', 'with', 'yield'] # Python3 的关键字列表

使用内建的 difflib 模块,我们可以比较出增减的关键字:

d = difflib.Differ()
diff = d.compare(kw2, kw3)
print '\n'.join(diff)

得到以下内容:

+ False
+ None
+ True
  and
  as
  assert
  break
  class
  continue
  def
  del
  elif
  else
  except
- exec
  finally
  for
  from
  global
  if
  import
  in
  is
  lambda
+ nonlocal
  not
  or
  pass
- print
  raise
  return
  try
  while
  with
  yield

那么问题来了,不管是使用 Python2 还是 Python3 ,我如何做,才能使用一个脚本,直接实现上面的结果???

阅读 5.5k
5 个回答

直接上代码,自己体会吧。

import os
import json
import difflib
def test():
    cmd2 = 'E:/Python27/python.exe -c "import keyword;import json;print (json.dumps(keyword.kwlist))"'
    cmd3 = 'C:/Python36/python.exe -c "import keyword;import json;print (json.dumps(keyword.kwlist))"'
    res2 = json.loads(os.popen(cmd2).read())
    res3 = json.loads(os.popen(cmd3).read())
    d = difflib.Differ()
    diff = d.compare(res2, res3)
    print '\n'.join(diff)
if __name__ == '__main__':
    test()

先做版本判断就好了

没看明白需求 ,写一个脚本同时执行 python2 和 3 ? os.system ?

不可能。
因为 kwlist 只能取到当前的列表。

版本判断准备python2和3两套程序调用就可以了

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题