Skip to content

แปลงโค้ดจาก Python 2 ไปยัง Python 3 ด้วย 2to3

สวัสดีทุกท่านก่อนสิ้นปี 2557 ครับ ในการเขียนโปรแกรม Python จาก Python 2 มายัง Python 3 มีการเปลี่ยนแปลงที่สำคัญ คือ การเปลี่ยนแปลงหลักไวยากรณ์ ทำให้นักพัฒนาที่ต้องการ Port โค้ดมายัง Python 3 ต้องไล่แก้โค้ดหลายบรรทัด ถ้าโค้ดมีจำนวนมาก ยิ่งใช้เวลาแก้โค้ดนาน บทความนี้จะพาผู้อ่านไปแปลงโค้ดจาก Python 2 ไปยัง Python 3 ด้วย "2to3" ครับ

  หลังจากที่ทางมูลนิธิซอฟต์แวร์ไพทอน (Python Software Foundation) ได้ออก Python 3.0 มาและได้ออกวิธีการแปลงโค้ดจาก Python 2 ไปยัง Python 3 และได้ออกเครื่องช่วยที่มีชื่อว่า "2to3" ครับ มีทั้งใน Python 2.7 และใน Python 3 ทุกรุ่นครับ
โดยเครื่องมือ 2to3 นี้สามารถแปลงโค้ดตามมาตรฐานของ Python ได้ เช่น print , OOP เป็นต้น และยังสามารถแปลงโค้ดการ import โมดูลมาตรฐาน เช่น tkinter ได้อีกด้วย
ในการเรีกใช้งานมีหลักการดังนี้ครับ
เปิดคอมมาไลน์ขึ้นมา เรียกใช้งานด้วยคำสั่ง

2to3.py ไฟล์โค้ดที่ต้องการแปลง.py

ใน Windows จะใช้คำสั่ง

python.exe C:\Python**\Tools\scripts\2to3.py ไฟล์โค้ดที่ต้องการแปลง.py

ตรง ** คือ เลขรุ่นของ Python เช่น ผมใช้ Python 3.4 เป็นเลข 34 ครับ
หากต้องการแปลงโค้ดจาก Python 2 ไปยัง Python 3 โดยเก็บไฟล์ Backup Python 2 ไว้ ใช้คำสั่ง

2to3.py ไฟล์โค้ดที่ต้องการแปลง.py -W

หากไม่ต้องการเก็บไฟล์ Backup Python 2 ไว้ ใช้คำสั่ง

2to3.py ไฟล์โค้ดที่ต้องการแปลง.py -n -W

ตัวอย่างการแปลงโค้ดจาก Python 2 ไปยัง Python 3 ด้วย 2to3

โค้ดไฟล์ py2.py

def greet(name):
    print "Hello, {0}!".format(name)
print "What's your name?"
name = raw_input()
greet(name)

ผมใช้คำสั่ง

2to3 py2.py -W

ผมจะได้ไฟล์

ไฟล์ py2.py ตอนนี้จะเป็นไฟล์โค้ดที่ถูกแปลงเป็น Python 3 แล้วครับ

def greet(name):
    print("Hello, {0}!".format(name))
print("What's your name?")
name = input()
greet(name)

ส่วนไฟล์ py2.py.bak จะเป็นไฟล์ Backup Python 2 ครับ

def greet(name):
    print "Hello, {0}!".format(name)
print "What's your name?"
name = raw_input()
greet(name)

สวัสดีปีใหม่ 2558 ขอให้ผู้อ่านทุกท่านมีสุขภาพร่างกายแข็งแรง มีแต่ความเจริญเข้ามาในชีวิต ขอให้ร่ำรวยมีความสุขตลอดทั้งปี 2558 ครับ

ขอบคุณครับ

Published on Categories py2_py3

About wannaphong

วรรณพงษ์ ภัททิยไพบูลย์ ผู้ดูแลเว็บ wannaphong.com และผู้เขียนบทความบล็อกนี้ นักศึกษาชั้นปีที่ 1 สาขาวิทยาการคอมพิวเตอร์และสารสนเทศ คณะวิทยาศาสตร์ประยุกต์และวิศวกรรมศาสตร์ มหาวิทยาลัยขอนแก่น วิทยาเขตหนองคาย

ใส่ความเห็น

อีเมลของคุณจะไม่แสดงให้คนอื่นเห็น ช่องที่ต้องการถูกทำเครื่องหมาย *