Я новичок в программировании, и мне нужна помощь с набором исправлений для рефакторинга кода, написанного для Python 3.x, в код, который может работать на интерпретаторе 2.x.
У меня есть Python 3.2, но для доступа к головоломке Spotify (http://www.spotify.com/us/jobs/tech/best-before/) требуется, чтобы код был написан в 2.6. Поэтому я нашел укрыватель 3to2. У меня есть "3to2_py3k-1.0.tar.gz "vesion, которую вы можете скачать здесь: https://bitbucket.org/amentajo/lib3to2.
Файл README сообщает вам
(...) Run" ./3to2 "для преобразования stdin ("-"), файлов или каталогов, заданных в качестве аргументов. (...)
Текст на этом сайте идентичен файлу README.
Я понимаюэто я должен запустить командную строку и затем написать:
C: \ Python32> 3to2 Spotify.py
3to2 не распознается как команда intern или extern, программный файл или пакетный файл.
(вручную переведен с норвежского).
Я попытался найти путь к специальным файлам, но нет файла, которыйЯ назвал «3to2». Я попытался напрямую перейти к файлу «main.py» и «Spotify.py», и кажется, что что-то происходит (как будтоНемного секунды и не выдает ошибок), но когда я снова открываю «Spotify.py», к файлу ничего не происходит.
Я ценю любую помощь.
Спасибо, спатц, это очень помогло.Наконец мне удалось установить пакет по cd
C:\Python32>python.exe setup.py install
В любом случае у меня все еще есть некоторые проблемы.Возьмите программу print("Hello World!")
в качестве примера.Когда я запускаю python.exe 3to2 HelloWorld.py
(он не работал без python.exe), он отвечает:
RefractingTool: Skipping implicit fixer: collections
RefractingTool: Skipping implicit fixer: int
RefractingTool: Skipping implicit fixer: memoryview
RefractingTool: Skipping implicit fixer: printfunction
RefractingTool: Skipping implicit fixer: inittest
RefractingTool: Refactored HelloWorld.py
--- HelloWorld.py (original)
+++ HelloWorld.py (refactored)
@@ -1 +1 @@
-print("Hello World!")
+print u"Hello World!"
RefactoringTool: Files that need to be modified:
RefactoringTool: HelloWorld.py
Это действительно смешанные для меня сигналы.Прежде всего, кажется, что он пропускает некоторые исправления, например printfunction
.Но позже это определенно выглядит так, как будто изменилось print("Hello World!")
с print u"Hello World!"
, как и должно быть.Проблема в том, что когда я открываю этот файл в IDLE 3.2, файл имеет оригинальный код.Точно так же происходит с файлом Spotify.py.Достаточно ли «умна» IDLE, чтобы изменить этот простой код, чтобы он был совместим с 3.x, или набор исправлений 3to2 не работает?
РЕШЕНИЕ: Я понял это.Я должен был включить -w
в качестве аргумента.Это преобразовало оригинальный файл в дополнение к созданию резервной копии файла .bak
.
Спасибо всем, кто помог мне!