Python2からPython3へ

Python2からPython3対応へ変更した時のメモです。

変更すべき箇所の確認

2to3 コマンドを実行して、変更すべき箇所を確認

$ 2to3 kumawatch.py
...
RefactoringTool: Refactored kumawatch.py
--- kumawatch.py     (original)
+++ kumawatch.py     (refactored)

@@ -5,7 +5,7 @@
-import ConfigParser
+import configparser

@@ -149,7 +149,8 @@
-except OSError as (errno, strerror):
+except OSError as xxx_todo_changeme:
+    (errno, strerror) = xxx_todo_changeme.args
     ...

@@ -189,7 +190,8 @@
-except OSError as (errno, strerror):
+except OSError as xxx_todo_changeme1:
+    (errno, strerror) = xxx_todo_changeme1.args
     ...

@@ -232,10 +234,10 @@
## Print config files
for f in args.conffile:
-    print(f, os.path.exists(f))
+    print((f, os.path.exists(f)))

## Read config files
-    config = ConfigParser.SafeConfigParser()
+    config = configparser.SafeConfigParser()

configparserモジュールへの変更

- import ConfigParser
+ import configparser

Python2では ConfigParser というモジュール名だったが、Python3では configparser に変更された。

OSErrorの書き方の変更

- except OSError as (errno, strerror):
+ except OSError(errno, strerror):

as が不要だった

Python2.7の場合:https://docs.python.org/2.7/library/exceptions.html
Python3.5の場合:https://docs.python.org/3.5/library/exceptions.html

print文の変更

print文からprint関数に変更になったため、 (...) で括らないといけなくなった。 ただ、print文の状態でも括弧でくくってよかったため(たぶん)、この部分に限っては変更しなくていいはず。