Python Reverse Sort

วันนี้เราจะมาเขียนโปรแกรมกันครับ เรื่องของเรื่องคือผมอัพเดตรายการคอลัมน์ที่เคยเขียนไปทั้งหมด ทีนี้มีไฟล์เก่าที่เก็บชื่อคอลัมน์ของปี 2003 อยู่แล้ว (เขียนมาสองปีแล้วเรอะเนี่ย) แต่มันดันเรียงตอนที่ 1 อยู่ข้างบนสุด ปัญหาคืออยากให้ตอนที่ 1 อยู่ล่างสุดมากกว่า แต่เราอุตส่าห์เป็นว่าที่บัณฑิต จะมาก็อปมือมันก็กระไรอยู่ใช่มั้ยครับ เรียนมาชิปหายวายป่วงควรจะมีประโยชน์บ้าง

วิธีแรกที่น่าจะสะดวกที่สุ ดก็คือถามพี่จุ๊ ที่ปรึกษาด้านเทคนิคได้ความว่ามีคำสั่ง tac ทำหน้าที่นี้ให้อยู่แล้ว พร้อมใช้ ปัญหาที่ตามมาคือ บน MacOSX มันไม่มีให้นี่สิ โอ้วววว... จะย้ายไฟล์ไปบนเครื่องลินุกซ์เพื่อ tac มันก็ดูเปลืองแรงงานเกิน สุดท้ายก็ต้องกลับมาที่รากเหง้า เขียนโปรแกรม reverse บรรทัดด้วย Python

โค้ดมี 6 บรรทัดเท่านั้นเอง

#!/usr/bin/python
#ระบุตำแหน่งของ Python Interpreter ก่อน

input = open("input.txt",'r')

# กำหนดไฟล์อินพุท พวกนี้จริงๆ ใช้การ redirect ของ shell แทนก็ได้
output = open("output.txt",'w')
# อันนี้ก็ไฟล์เอาท์พุท

S = input.readlines()
# อ่านทั้งไฟล์ทีละบรรทัด เก็บลงลิสต์
S.reverse()
# ใช้ฟังก์ชันพื้นฐานของลิสต์ reverse order ซะ
output.writelines(S)
# เขียนผลลัพธ์ที่ได้ ลงไฟล์คืน

เวลารันก็ python reverse.py จบเลย
หรือถ้าอยากสะดวกก็ chmod +x reverse.py ก่อน แล้ว ./reverse.py ก็ได้

จ ะเห็นว่ามันสะดวกมาก เพราะ python ไม่ต้อง declare ตัวแปรก่อน แถมมีฟังก์ชันพื้นฐานสำหรับ data structure ที่ค่อนข้างซับซ้อนอย่าง list ให้เลย