Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

Python แสดงรายการไฟล์ในไดเร็กทอรี:คำแนะนำทีละขั้นตอน

ไลบรารี 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 ฉบับเต็ม