20 กรกฎาคม 2558

Published 7/20/2558 by with 0 comment

สแกนไฟล์ด้วย scandir ในภาษา Python

scandir เป็นโมดูลหนึ่งในภาษา Python ใช้สำหรับสแกนไฟล์ที่อยู่ในโฟลเลอร์ที่กำหนด โดยโมดูลนี้ถูกออกแบบมาให้ทำงานให้มีประสิทธิภาพมากกว่าคำสั่ง os.walk() โดยทำงานได้เร็วกว่า 2-20 เท่าในเวลาเดียวกัน (ถืออยู่กับระบบปฎิบัติการและทรัพยากรที่มีอยู่) โดยลดจำนวนการเรียกใช้คำสั่ง os.stat() ทำให้ทำงานได้อย่างรวดเร็วขึ้น

โมดูลนี้รองรับทั้ง Python 2.6 + และ Python 3.2 + ขึ้นไป (CPython เท่านั้น) (เป็น New BSD)

และโมดูลตัวนี้ได้ถูกรวมเข้ามากับคำสั่งไลบรารี os ใน Python 3.5 โดยอยู่ในคำสั่ง

[python]
os.scandir()[/python]

ทำให้เมื่อ Python 3.5 ออกมา จึงไม่จำเป็นต้องติดตั้งโมดูลนี้ ยกเว้นใช้ < Python 3.5

สามารถติดตั้งได้โดยใช้คำสั่ง pip (โปรดตรวจการตั้งค่า C คอมไพเลอร์กับ CPython ให้เรียบร้อย) :
pip install scandir

การเรียกใช้งาน


ให้ทำการ import คำสั่งเข้ามา

[python]
try:
from os import scandir, walk #โค้ดสำหรับ Python 3.5+
except ImportError:
from scandir import scandir, walk #โค้ดสำหรับ < Python 3.5
[/python]

คำสั่ง walk()
คำสั่ง walk() มีลักษณะการใช้งานเหมือนคำสั่ง os.walk() อ่านรายละเอียดได้ที่ https://docs.python.org/3.5/library/os.html#os.walk
สแกนไฟล์ที่อยู่ในโฟลเลอร์
ใช้คำสั่ง

[python]
scandir(path='.')
[/python]

โดยคืนค่าผลลัพธ์ออกมาเป็นวัตถุ DirEntry
ตัวอย่างการใช้งาน

[python]
>>> try:
... from os import scandir, walk #โค้ดสำหรับ Python 3.5+
... except ImportError:
... from scandir import scandir, walk #โค้ดสำหรับ < Python 3.5
...
>>> a = scandir(path='.')
>>> print(a)
<scandir.ScandirIterator object at 0xb691d350>
>>> for i in a:
... print(i)
...
<DirEntry 'เอกสาร'>
[/python]

อ่านเอกสารคำสั่ง os.scandir ได้ที่ https://www.python.org/dev/peps/pep-0471/

หน้าหลักโมดูล scandir https://github.com/benhoyt/scandir
ติดตามบทความต่อไปนะครับ
ขอบคุณครับ

0 ความคิดเห็น:

แสดงความคิดเห็น

แสดงความคิดเห็นได้ครับ :)