В то время как пошаговые решения в других ответах будут работать, этот подход ошибочен просто потому, что слишком легко сделать небольшую ошибку, пропустить место, которое требует исправления, и т. Д. Лучшее решение - просто использовать the 2to3
конвертер . Вы можете исправить все ваши файлы одним махом:
$ 2to3 -f has_key -w auto-selfcontrol.py
Выполняется только has_key
fixer , который преобразуется из dict.has_key(key)
в key in dict
. Конечно, вы можете сделать это самостоятельно, но это тот случай, когда простые программные исправители работают просто отлично. Возможно, вы захотите запустить его без -f has_key
, чтобы он применял все исправители одновременно, в случае каких-либо других критических изменений, которые применяются между Py2 и Py3.
2to3
обрабатывает практически все автоматически, за исключением изменений типа Py2 str
(где это логическое решение кода о том, должен ли данный литерал str
быть bytes
или str
в Py3) и целочисленное деление (где /
может потребоваться изменить на //
, в зависимости от того, является ли вычисление логическим делением с плавающей запятой или делением по полу). Но для has_key
это довольно надежно.