在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/Python/ 如何寫一個python腳本,可以同時執(zhí)行 python3 和 Python2?

如何寫一個python腳本,可以同時執(zhí)行 python3 和 Python2?

不管是在 Python2 還是在 Python3 中,我們可以通過以下方法得到關(guān)鍵字列表:

import keyword
keyword.kwlist

現(xiàn)在我們可以得到兩個版本的 Python 的關(guān)鍵字,手工賦值

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 關(guān)鍵字列表

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 的關(guān)鍵字列表

使用內(nèi)建的 difflib 模塊,我們可以比較出增減的關(guān)鍵字:

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

得到以下內(nèi)容:

+ 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 ,我如何做,才能使用一個腳本,直接實現(xiàn)上面的結(jié)果???

回答
編輯回答
浪婳

不可能。
因為 kwlist 只能取到當(dāng)前的列表。

2017年12月23日 06:46
編輯回答
司令

先做版本判斷就好了

2017年8月4日 23:25
編輯回答
浪婳

沒看明白需求 ,寫一個腳本同時執(zhí)行 python2 和 3 ? os.system ?

2017年4月13日 22:40
編輯回答
礙你眼

版本判斷準備python2和3兩套程序調(diào)用就可以了

2018年7月28日 00:20
編輯回答
老梗

直接上代碼,自己體會吧。

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()
2017年8月12日 07:54