ไลบรารี Python os ใช้เพื่อแสดงรายการไฟล์ในไดเร็กทอรี Python os.listdir() วิธีการส่งกลับรายการของทุกไฟล์และโฟลเดอร์ในไดเร็กทอรี ฟังก์ชัน os.walk() ส่งคืนรายการของทุกไฟล์ในแผนผังไฟล์ทั้งหมด
บ่อยครั้งเมื่อคุณทำงานกับไฟล์ใน Python คุณจะพบกับสถานการณ์ที่คุณต้องการแสดงรายการไฟล์ในไดเร็กทอรี ตัวอย่างเช่น คุณอาจต้องการค้นหาไฟล์ Python ทั้งหมดในโฟลเดอร์
ไลบรารี Python os มีหลายวิธีที่สามารถใช้ในการแสดงรายการไฟล์ในไดเร็กทอรี บทช่วยสอนนี้จะกล่าวถึงวิธีใช้ os.listdir() เพื่อรับไฟล์และโฟลเดอร์ในไดเร็กทอรี เราจะพูดถึงการใช้ os.walk() . ด้วย เพื่อรับไฟล์และโฟลเดอร์ในไดเร็กทอรี และ ในไดเรกทอรีย่อย
ไลบรารี Python os
ไลบรารี Python os มีฟังก์ชันมากมายที่คุณสามารถใช้เพื่อทำงานกับระบบปฏิบัติการ ฟังก์ชันต่างๆ ที่รวมอยู่ในโมดูลระบบปฏิบัติการทำงานบนระบบปฏิบัติการสมัยใหม่ ไม่ว่าจะเป็น Windows, Linux หรือ Mac
เนื่องจากระบบปฏิบัติการเป็นไลบรารีภายนอก เราจึงต้องนำเข้ามาไว้ในโค้ดของเราก่อนที่เราจะเริ่มใช้งาน เราสามารถทำได้โดยใช้คำสั่งนำเข้า Python:
import os
ตอนนี้เราได้นำเข้าไลบรารีระบบปฏิบัติการลงในโค้ดของเราแล้ว เราสามารถเริ่มใช้ฟังก์ชันเพื่อแสดงรายการในไดเร็กทอรีได้
Python os.listdir()
ใน Python os.listdir() เมธอดแสดงรายการไฟล์และโฟลเดอร์ในไดเร็กทอรีที่กำหนด เมธอดนี้ไม่ส่งคืนรายการพิเศษ เช่น '.' และ '..' ซึ่งระบบปฏิบัติการใช้เพื่อนำทางไปยังไดเร็กทอรีต่างๆ
os.listdir() จะไม่ส่งคืนไฟล์และโฟลเดอร์ที่เกินระดับแรกของโฟลเดอร์ กล่าวอีกนัยหนึ่ง os.listdir() ไม่ส่งคืนสิ่งใดภายในโฟลเดอร์ย่อยที่ค้นพบโดยวิธีการ
81% ของผู้เข้าร่วมกล่าวว่าพวกเขารู้สึกมั่นใจมากขึ้นเกี่ยวกับโอกาสในการทำงานด้านเทคโนโลยีหลังจากเข้าร่วม bootcamp จับคู่กับ Bootcamp วันนี้
ผู้สำเร็จการศึกษาจากหลักสูตร bootcamp โดยเฉลี่ยใช้เวลาน้อยกว่าหกเดือนในการเปลี่ยนอาชีพ ตั้งแต่เริ่มต้น bootcamp ไปจนถึงหางานแรก
ฟังก์ชัน os.listdir() ยอมรับหนึ่งพารามิเตอร์:พาธไฟล์ของไดเร็กทอรีที่มีชื่อไฟล์และโฟลเดอร์ที่คุณต้องการดึงข้อมูล
นี่คือไวยากรณ์สำหรับเมธอด listdir:
os.listdir(path)
มาดูตัวอย่างการใช้วิธีนี้ในโปรแกรม Python กัน
os.listdir() ตัวอย่างหลาม
สมมติว่าเรากำลังสร้างโปรแกรมที่วิเคราะห์ประสิทธิภาพตลาดหุ้นของ Netflix ในช่วงทศวรรษที่ผ่านมา เรามีโฟลเดอร์ (ชื่อ:/home/data_analysis/netflix) ที่มีข้อมูลดิบทั้งหมดของเรา และก่อนที่โปรแกรมของเราจะเริ่มทำงาน เราต้องการตรวจสอบเพื่อให้แน่ใจว่าไฟล์ raw_data_2019.csv อยู่ในโฟลเดอร์นั้น
เพื่อให้ทำงานได้อย่างถูกต้อง โปรแกรมของเราจำเป็นต้องเก็บไฟล์นั้นไว้ในโฟลเดอร์นั้น
เราสามารถใช้รหัสต่อไปนี้เพื่อดึงรายการไฟล์ใน /home/data_analysis/netflix ไดเร็กทอรีงาน:
import os path = '/home/data_analysis/netflix' files = os.listdir(path) for f in files: print(f)
โปรแกรมของเราดึงรายการไฟล์และโฟลเดอร์ทั้งหมดในไดเร็กทอรีที่ระบุและส่งคืนข้อมูลต่อไปนี้:
README.md app.py raw_data_2016.csv raw_data_2017.csv raw_data_2018.csv raw_data_2019.csv processed_data
ตอนนี้ เราสามารถตรวจดูว่าไฟล์ raw_data_2019.csv อยู่ในโฟลเดอร์ อย่างที่คุณเห็นนั่นแหละ
มาทำลายรหัสของเรากัน ในบรรทัดแรก เรานำเข้าโมดูล os ซึ่งเราต้องทำเพื่อเข้าถึง os.listdir() การทำงาน. จากนั้น เราประกาศตัวแปร Python ชื่อ path ซึ่งเก็บชื่อของเส้นทางที่มีเนื้อหาที่เราต้องการดึงข้อมูล
ในบรรทัดถัดไป เราใช้เมธอด os.listdir() เพื่อรับรายการไฟล์และโฟลเดอร์ใน /home/data_analysis/netflix ไดเร็กทอรี สุดท้าย เราสร้าง Python for loop การวนซ้ำนี้จะวนซ้ำทุกรายการในรายการที่สร้างโดย os.listdir() . เราพิมพ์ชื่อของแต่ละไฟล์ไปยังคอนโซลโดยใช้คำสั่ง Python print()
/home/data_analysis/netflix ไดเร็กทอรีมีหกไฟล์และหนึ่งไดเร็กทอรี ไดเร็กทอรีเรียกว่าprocessed_data และแตกต่างจากไฟล์อื่นเพราะไม่มีนามสกุล
Python os.walk()
os.walk() ฟังก์ชั่นดึงรายการไฟล์ที่มีอยู่ในทรี เมธอดจะวนซ้ำในแต่ละไดเร็กทอรีในแผนผัง จากนั้น os.walk() จะคืนค่าชื่อของทุกไฟล์และโฟลเดอร์ภายในไดเร็กทอรีและไดเร็กทอรีย่อยใดๆ
ไวยากรณ์สำหรับ os.walk() วิธีการมีดังนี้:
os.walk(top, topdown, onerror, followlinks)
os.walk() method ยอมรับสี่พารามิเตอร์:
- ด้านบน เป็นไดเร็กทอรีระดับบนสุดที่มีไฟล์ส่วนประกอบและชื่อโฟลเดอร์ที่คุณต้องการดึงข้อมูล (จำเป็น)
- จากบนลงล่าง เมื่อตั้งค่าเป็น True จะระบุว่าควรสแกนไดเร็กทอรีจากบนลงล่าง หากตั้งค่านี้เป็น "เท็จ" ไดเรกทอรีจะถูกสแกนจากล่างขึ้นบน (ไม่บังคับ)
- เกิดข้อผิดพลาด จัดเตรียมตัวจัดการข้อผิดพลาดหากพบข้อผิดพลาด (เป็นทางเลือก)
- ติดตามลิงก์ หากตั้งค่าเป็น True จะเข้าสู่โฟลเดอร์ที่อ้างอิงโดยลิงก์ของระบบ (ไม่บังคับ)
เราจะมุ่งเน้นไปที่สองพารามิเตอร์แรกเนื่องจาก onerror และ followlinks มีความก้าวหน้ามากกว่าและไม่ได้ใช้กันทั่วไป
os.walk() ตัวอย่างหลาม
สมมติว่าเราต้องการเรียกชื่อไฟล์ทั้งหมดใน /home/data_analysis/netflix ไดเร็กทอรี เรายังต้องการค้นหาว่ามีอะไรอยู่ในไดเรกทอรีย่อยทั้งหมดในโฟลเดอร์นั้นด้วย
ดังที่เราได้กล่าวไว้ข้างต้น netflix ไดเร็กทอรีมีหนึ่งโฟลเดอร์:processed_data . เราสามารถใช้โค้ดต่อไปนี้เพื่อดึงชื่อไฟล์ทั้งหมดใน /home/data_analysis/netflix ไดเรกทอรี และ ไดเรกทอรีย่อย:
import os path = '/home/data_analysis/netflix' for root, directories, files in os.walk(path, topdown=False): for name in files: print(os.path.join(root, name)) for name in directories: print(os.path.join(root, name))
นี่คือผลลัพธ์จากโค้ดของเรา:
/home/data_analysis/netflix/README.md /home/data_analysis/netflix/app.py /home/data_analysis/netflix/raw_data_2016.csv /home/data_analysis/netflix/raw_data_2017.csv /home/data_analysis/netflix/raw_data_2018.csv /home/data_analysis/netflix/raw_data_2019.csv /home/data_analysis/netflix/processed_data /home/data_analysis/netflix/processed_data/final.csv
เรานำเข้าโมดูลระบบปฏิบัติการที่เราอ้างอิง os.walk() และ os.path.join() วิธีการในภายหลังในรหัสของเรา จากนั้นเราประกาศตัวแปรชื่อเส้นทาง ซึ่งเก็บพาธที่มีชื่อไฟล์ที่เราต้องการค้นหา
จากนั้นเราสร้างสำหรับ ลูปที่ใช้ os.walk() เพื่อดึงรายการไฟล์และโฟลเดอร์ทั้งหมดในเส้นทาง ไดเร็กทอรี ลูปนั้นวนซ้ำผ่านไฟล์และโฟลเดอร์ที่ os.walk() ส่งคืน เป็นที่น่าสังเกตว่าเราระบุ topdown=False พารามิเตอร์ใน os.walk() ซึ่งบอกให้โค้ดของเราทำการค้นหาจากบนลงล่าง
สำหรับของเรา วนซ้ำผ่านแต่ละไฟล์และไดเรกทอรีที่ค้นพบโดยวิธี os.walk() โดยใช้ for เพิ่มเติม ลูป เราพิมพ์ไฟล์ใน os.walk() ไปยังคอนโซล
ในโค้ดของเราด้านบน นี่คือ for . ของเรา ลูป:
for root, directories, files in os.walk(path): for name in files: print(os.path.join(root, name)) for name in directories: print(os.path.join(root, name))
จากนั้นโปรแกรมของเราจะใช้ os.path.join() เพื่อรวมโฟลเดอร์รูทของแต่ละไฟล์เข้าด้วยกัน (เช่น /home/data_analysis/netflix ) และชื่อไฟล์ (เช่น raw_datra_2019.csv ). โฟลเดอร์รากหมายถึงเส้นทางไดเรกทอรีที่มีไฟล์อยู่
บทสรุป
คุณสามารถใช้ Python listdir() วิธีการทำเช่นนี้ คุณยังสามารถใช้ walk() เมธอด ซึ่งแสดงรายการทุกอย่างในไดเร็กทอรี รวมถึง อะไรก็ได้ภายในไดเรกทอรีย่อย
คู่มือนี้สำรวจโดยให้ตัวอย่างวิธีการใช้ os.listdir() และ os.walk() วิธีการแสดงรายการไฟล์และโฟลเดอร์ในไดเร็กทอรีใน Python ตอนนี้คุณมีทักษะที่จำเป็นในการแสดงรายการไฟล์ในไดเร็กทอรีใน Python อย่างผู้เชี่ยวชาญ!
หากต้องการเรียนรู้เพิ่มเติมเกี่ยวกับการเขียนโค้ดใน Python โปรดอ่านคู่มือ How to Learn Python ฉบับเต็ม