خیلی از کد های خوب پایتون در زمان پایتون ۲ نوشته شده اند. اگر شما هم برنامه ای با این ورژن از پایتون نوشتید، باید آن را به پایتون ۳ انتقال بدهید. شاید بگویید این کار، کاری وقت گیر و سخت است. ولی اینطور نیست!

ماژولی وجود دارد به نام 2to3 که روش نصب آن در ادامه توضیح داده می شود. به وسیله این نرم افزار می توانید فایل پایتون ۲ خود را به پایتون ۳ تبدیل کنید!
این ماژول در برخی از سیستم عامل های لینوکسی مثل اوبونتو به طور پیشفرض نصب شده و می توانید با نام 2to3-2.7 به آن دسترسی داشته باشید.
برای نصب این ماژول می توانید دستور زیر را در خط فرمان سیستم عامل خود وارد کنید:
pip install 2to3
هم اکنون این نرم افزار قابل استفاده است.
با دستور زیر که خروجی آن مثل diff در گیت است، می توانید تغییرات مورد نیاز برای تبدیل فایل از پایتون ۲ به ۳ را ببینید. ما در اینجا فایلی داریم به نام p2.py که می خواهیم این دستور را بر روی آن انجام دهیم.
محتوای p2.py:
print 'Py2'
الآن به دستورات زیر (و خروجی آن) نگاه کنید:
reza@reza:~/Documents$ 2to3 p2.py RefactoringTool: Skipping optional fixer: buffer RefactoringTool: Skipping optional fixer: idioms RefactoringTool: Skipping optional fixer: set_literal RefactoringTool: Skipping optional fixer: ws_comma RefactoringTool: Refactored p2.py --- p2.py (original) +++ p2.py (refactored) @@ -1 +1 @@ -print 'Py2' +print('Py2') RefactoringTool: Files that need to be modified: RefactoringTool: p2.py
با فلگ w- می توانیم محتوای فایل پایتون ۲ را به پایتون ۳ تبدیل کنیم:
reza@reza:~/Documents$ 2to3 -w p2.py RefactoringTool: Skipping optional fixer: buffer RefactoringTool: Skipping optional fixer: idioms RefactoringTool: Skipping optional fixer: set_literal RefactoringTool: Skipping optional fixer: ws_comma RefactoringTool: Refactored p2.py --- p2.py (original) +++ p2.py (refactored) @@ -1 +1 @@ -print 'Py2' +print('Py2') RefactoringTool: Files that were modified: RefactoringTool: p2.py
در دستور قبل، فقط تغییرات مورد نیاز نمایش داده می شدند؛ ولی در نتیجه این دستور، محتوای فایل پایتون ۲ تغییر کردند.
محتوای فایل p2.py:
print('Py2')
به کلماتی که این نرم افزار از طریق آن ها نیاز به تغییر را متوجه میشود، یعنی کلماتی که نحوه کار با آنها در پایتون ۲ متفاوت از پایتون ۳ است (مثل print)، fixer گفته می شود. برای اطلاع از fixer ها می توانید از دستور زیر استفاده کنید:
2to3 -l
ممکن است بخواهید بخشی از fixer ها را تغییر ندهید. می توانید fixer هایی که می خواهید تغییر یابند را مشخص کنید:
2to3 -f raw_input p2.py
به وسیله دستور بالا، به 2to3 می گوییم که فقط raw_input ها را تغییر بده. به دلیل اینکه فایل ما هیچ raw_inputـی ندارد، خروجی به شکل زیر خواهد بود:
RefactoringTool: No files need to be modified.
در بند قبل، ما fixer هایی که می خواهیم استفاده شوند را مشخص کردیم. اگر بخواهید به 2to3 بگویید که از همه fixer ها استفاده کن به جز یک یا چند fixer خاص، می توانید از فلگ x- استفاده کنید:
2to3 -x print p2.py
دستور بالا، همه تغییرات را اعمال می کند به جز تابع print.
ممکن است بخواهید فایل پایتون ۲ بدون تغییر بماند و تغییرات در فایل دیگر ذخیره شوند. برای این کار باید از فلگ o- استفاده کنید که به دلیلی به فلگ n- نیاز دارد. همچنین به خاطر اینکه باید در فایل جدید چیزی بنویسد، باید از فلگ w- هم استفاده کنید:
reza@reza:~/Documents$ 2to3 -w -n -o ../Music/ p2.py lib2to3.main: Output in '../Music/' will mirror the input directory '' layout. RefactoringTool: Skipping optional fixer: buffer RefactoringTool: Skipping optional fixer: idioms RefactoringTool: Skipping optional fixer: set_literal RefactoringTool: Skipping optional fixer: ws_comma RefactoringTool: Refactored p2.py --- p2.py (original) +++ p2.py (refactored) @@ -1 +1 @@ -print 'Py2' +print('Py2') RefactoringTool: Writing converted p2.py to ../Music/p2.py. RefactoringTool: Files that were modified: RefactoringTool: p2.py
در مثال بالا، تغییر یافته فایل p2.py در دایرکتوری Music ذخیره شد. البته با همان نام فایل مبدا. (در اینجا: p2.py)
امیدوارم که این مقاله نیازتان را برآورده باشد. ان شاء الله در مقاله ای دیگر، درباره برخی از fixer ها توضیحاتی داده خواهد شد.
منبع: مستندات پایتون