เลียนแบบมาจากรวมรีวิวซอฟต์แวร์ใน Blognone ที่น่าจะใช้ได้ใน Python เหมือนกันเพราะแนวคิด Battery Included ของ Python เอง ช่วงแรกนี้ขอเฉพาะโมดูลมาตรฐานก่อน แล้วตอนหลังค่อยเขยิบไปเล่นแนะนำโมดูลรอบนอกกัน ข้อมูลที่ต้องให้ก็ชื่อโมดูล คำอธิบายถึงการใช้งานสั้นๆ และตัวอย่างโค้ด เช่น
โมดูลสำหรับสร้างสตริงให้เป็น file-like object มีประโยชน์มาเมื่อใช้ร่วมกับ unittest ทำให้ได้ไฟล์ที่ต้องการรวมอยู่ในตัวโมดูลเอง
>>> import StringIO >>> f = StringIO.StringIO("ascdef") >>> f.read(2) 'as' >>> f.tell() 2 >>> f.seek(0) >>> f.read() 'ascdef'
กระทู้เก่าๆ จะย้ายตามไปในภายหลัง ตอนนี้ปิดการโพสต์กระทู้ไว้ เหลือไว้เฉพาะอ้างอิงเท่านั้น
มาเสริมให้ว่าตอนนี้ถ้าอยากใส่โค้ด ให้ใช้แท็ก pre ไปพลางๆ ก่อน ตัว code filter กำลังจะตามมาครับ
ของ Ruby
StringIO
ปกติผมใช้ cStringIO นะ
เค้าว่ามันเร็วกว่า
มีปัญหานิดหน่อยกับ
cStringIOมันรับ unicode ที่ไม่สามารถแปลงเป็น ascii ไม่ได้ และมันก็ไม่เหมือนกันซะทีเดียวปกติผมก็ใช้
cStringIOแต่จะใช้ด้วยfrom cStringIO import StringIOเผื่อเปลี่ยนใจทีหลังจะได้แก้แค่ที่เดียวConfigParser
ถ้าต้องการเก็บค่าไว้ในไฟล์ข้างนอกแบบง่ายๆ หน้าตาคล้าย ini บนวินโดส์ก็สามารถใช้ ConfigParser ได้ทันที
หน้าตาของค่าที่เก็บจะประกอบด้วย section และ option อยู่ข้างใน
ซึ่งหมายความว่ามี section ชื่อ
codenoneและblognoneซึ่งมี option ชื่อbaseและforumเหมือนๆ กัน#หมายถึงคำอธิบายเวลาใช้ก็ง่ายดาย
นอกจาก
get()แล้วก็ยังมีgetint()getfloat()getboolean()ด้วย ส่วนการเขียนก็ทำได้คล้ายๆ กันTempfile
สร้างและจัดการ Temporary File แบบไม่ขึ้นต่อระบบปฏิบัติการ
>>> import tempfileสองฟังก์ชั่นข้างล่างนี้ให้ file object ของ tempfile มา ไฟล์จะถูกลบเมื่อ close()หรือ เมื่อ file object ถูก garbage collection
*
TemporaryFile(): ใช้เมื่อไม่ต้องการ access file โดยใช้ path*
NamedTemporaryFile(): มี path ให้ โดยเรียกดูผ่าน attribute nameTemporary Directory บ้าง (ต้องจัดการลบเองด้วยนะ)
*
mkdtemp(): ให้ absolute path ของ directory ที่สร้างขึ้นshutil
เข้าเมืองตาหลิ่วก็ต้องหลิ่วตาตาม เวลาจะทำสำเนาไฟล์หรือไดเรกทอรี่ใน Python ก็มีวิะีของ Python ที่ใช้ได้เสมอ อย่าไปอุตริใช้แต่
os.system()โมดูลที่ว่าก็คือshutilนี่เอง ยกเว้นตอนลบต้องใช้os.link()ยังมีเพิ่มเติมอีกหน่อยลองไปอ่านที่ Library Reference
ctypes
เพิ่งเข้ามาเป็น Standard ใน Python 2.5 แต่ใน 2.4 ก็ใช้งานได้เหมือนกัน โดยหลักมันคือโมดูลเพิ่มความสามารถในการเรียกฟังก์ชั่นจากภาษา C มาใช้งานใน Python ใช้งานง่ายอย่างไม่น่าเชื่อจนผมติดนิสัยเอา C Function มาใช้ในโหมด Interactive อยู่เรื่อยๆ
ตัวอย่างไฟล์ hello.c
SimpleHTTPServer
บางทีโปรแกรมเราก็ต้องติดต่อกับโลกภายนอกบ้าง ถ้าเป็นโปรแกรม interactive ก็ง่ายหน่อย แต่ถ้าโปรแกรมที่ว่าดันรัน background ก็ต้องใช้เน็ตเวิร์คกันละ วิธีที่ทำง่ายและไม่ซับซ้อนก็คือสร้างเว็บเซิร์ฟเวอร์จิ๋วขึ้นมาในตัวโปรแกรมเอง ซึ่งอาจจะไปเรียกโปรแกรมภายนอกอื่นหรือไม่ก็ได้ ใน Python นั้นมีโค้ดสำหรับสร้างเซิร์ฟเวอร์หลายแบบให้เลือกใช้ รวมไปถึงเว็บเซิร์ฟเวอร์ด้วย ซึ่งใช้ง่ายสุดๆ เช่นข้างล่าง
ผมชอบใช้สำหรับการดาวน์โหลดไฟล์จากไดเรกทอรี่ปัจจุบัน หลังจากพิมพ์โค้ดนี้แล้วก็เปิดเบราเซอร์ได้ http://localhost:8080/ ก็จะเห็นไฟล์ในนั้นให้เลือกกดโหลดหรือเข้าไปข้างในได้เรื่อยๆ โค้ดนี้รับได้แค่ทีละ 1 ไคลเอนต์เท่านั้น เพราะยังไม่มี fork หรือ thread มาเกี่ยวข้อง
หมายความว่ามันจะแม็ปไดเรคทอรีปัจจุบันกับ localhost:8080 ให้เลย ไม่ต้องไปทำ public_html ตามปกติให้เสียเวลา?
ถูกต้องนะคร้าบ โหลดไฟล์ได้ ไม่มี CGI ถ้าอยากได้ CGI ก็เปลี่ยน handler ซะหน่อย
ผมใช้ cherrypy เลย จริงๆแล้วนึกอะไรไม่ออกก็ใช้ turbogears เลย บางทีก็ใช้ (แต่เอามาทำเป็น REST)
ลบยังไงครับ