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

Python os.path.join: คู่มือสำหรับผู้เริ่มต้น

เมธอด Python os.path.join รวมชื่อเส้นทาง (path names) หนึ่งหรือมากกว่าเป็นเส้นทางเดียว เมธอดนี้มักใช้กับเมธอด os เช่น os.walk() เพื่อสร้างเส้นทางสุดท้ายสำหรับไฟล์หรือโฟลเดอร์ os.path.join() เพิ่มเครื่องหมายทับหน้า (forward slashes) ที่จำเป็นเข้าไปในชื่อเส้นทางไฟล์โดยอัตโนมัติ

วิธีใช้ Python os.path.join

คุณอาจเคยหลงทางในเขาวงกตเส้นทาง (path labyrinth) เมื่อทำงานกับไฟล์ใน Python

เพื่อทำงานกับไฟล์ คุณต้องระบุไดเรกทอรีที่ไฟล์ปรากฏอยู่ นี่ง่ายกว่าที่คิด หากคุณไม่ระบุเส้นทางที่ถูกต้อง โปรแกรมของคุณจะไม่ทำงาน

ในคู่มือนี้ เราจะพูดถึง os.path.join นี่คือเมธอดที่รวมส่วนประกอบของเส้นทางไฟล์เป็นเส้นทางที่สมบูรณ์ เราจะเดินทางผ่านสองตัวอย่างเพื่อช่วยให้คุณเริ่มต้นใช้งานเมธอดนี้ได้

สิ่งที่อยู่ในเส้นทางไฟล์ (What is in a File Path?)

เส้นทางไฟล์คือลำดับของชื่อไฟล์และโฟลเดอร์ ลำดับชื่อเหล่านี้พาคุณไปยังสถานที่เฉพาะบนระบบปฏิบัติการ (OS) ของคอมพิวเตอร์ของคุณ

มาใช้เส้นทางต่อไปนี้เป็นตัวอย่าง:

/Users/James/tutorials

เส้นทางนี้พาเราไปยังโฟลเดอร์ชื่อ "tutorials" หากเราต้องการเข้าถึงไฟล์หรือไดเรกทอรีเฉพาะในโฟลเดอร์นี้ เราสามารถชี้ไปยังมันโดยใช้ชื่อไฟล์:

/Users/James/tutorials/README.md

คุณสามารถเขียนเส้นทางไฟล์เหล่านี้ด้วยตนเองใน Python การทำเช่นนั้นอาจไม่เป็นประโยชน์ นี่คือที่มาของ os.path.join

Python os.path.join คืออะไร?

os.path.join รวมชื่อเส้นทางเป็นเส้นทางที่สมบูรณ์เดียว นี่หมายความว่าคุณสามารถรวมหลายส่วนของเส้นทางเป็นเส้นทางเดียว แทนที่จะเขียนชื่อเส้นทางทั้งหมดด้วยตนเอง (hard-coding)

เพื่อใช้ฟังก์ชันนี้ คุณต้องนำเข้าไลบรารี os เข้าสู่โค้ดของคุณ:

import os

มาดูไวยากรณ์ของเมธอด os.path.join() ฟังก์ชัน os.path.join รับรายการของเส้นทางที่คุณต้องการรวมเป็นหนึ่ง:

os.path.join(path1, path2...)

path1, path2 และค่าต่อไปทั้งหมด แทนเส้นทางที่คุณต้องการรวมเป็นชื่อเดียว

path = os.path.join("/Users/James/tutorials", "index.html")
print(path)

โค้ดนี้คืนค่า: /Users/James/tutorials/index.html เมธอด os.path.join ดำเนินต่อจากส่วนประกอบเส้นทางแบบสัมบูรณ์ (absolute path component) ที่เราระบุ ("/Users/James/tutorials") เราเพิ่ม index.html เข้าไปที่ท้ายของเส้นทาง

อย่างสะดวก เมธอด os.path.join แทรกเครื่องหมายทับหน้า (ซึ่งเรียกว่า "directory separators") เมื่อจำเป็น นี่ทำให้มันเป็นวิธีที่สะดวกกว่าการรวมชื่อเส้นทางไฟล์ด้วยตนเอง

ตัวอย่าง os.path.join ใน Python

มารวมชื่อไฟล์ "index.html" ในโฟลเดอร์ "tutorials/web/" ไฟล์นี้อยู่ภายในไดเรกทอรีทำงานปัจจุบันของเรา

เราจะเริ่มต้นด้วยการนำเข้าไลบรารี os:

import os

ต่อไป เราจะรับไดเรกทอรีทำงานปัจจุบันของเรา เพื่อที่เราจะสามารถเพิ่มชื่อเส้นทางไฟล์ของเราเข้าไปได้:

cwd = os.getcwd()

สิ่งนี้คืนค่าไดเรกทอรีทำงานปัจจุบันของเรา ซึ่งคือ /Users/James/tutorials โฟลเดอร์ "tutorials" อยู่ภายในไดเรกทอรีบ้านของผู้ใช้ เราสามารถใช้ข้อมูลนี้เพื่อเพิ่ม "tutorials/web" เข้าไปที่ท้ายของไดเรกทอรีทำงานของเรา:

web_tutorials = os.path.join(cwd, "tutorials/web")
print(web_tutorials)

โค้ดนี้คืนค่า: /Users/James/tutorials/web โค้ดของเราได้รวมส่วนประกอบชื่อเส้นทางของเราเป็นหนึ่ง เครื่องหมายทับหน้า ("/") ได้ถูกเพิ่มระหว่างชื่อเส้นทางของเรา เส้นทางนี้อ้างอิงถึงโฟลเดอร์ "web" ในเส้นทางที่มีอยู่ของเรา

Python os.path.join: แสดงรายการไฟล์

มาใช้เมธอด os.path.join เพื่อคืนค่าเส้นทางไฟล์เต็มของไฟล์ทั้งหมดในโฟลเดอร์ เราจะแสดงรายการไฟล์ทั้งหมดในโฟลเดอร์ "Desktop" บนระบบไฟล์ของเรา โฟลเดอร์นี้ตั้งอยู่ในไดเรกทอรี "/Users/James/" บนไดรฟ์

เราจะเริ่มต้นด้วยการนำเข้าไลบรารี os และกำหนดไดเรกทอรีที่เราต้องการค้นหา:

import os
cwd = os.getcwd()
desktop = os.path.join(cwd, "Desktop")

โค้ดนี้สร้างเส้นทางไฟล์สำหรับโฟลเดอร์ Desktop เทียบกับไดเรกทอรีทำงานปัจจุบันของเรา ต่อไป เราสามารถใช้เมธอด Python os.listdir() เพื่อดึงรายการของไฟล์ทั้งหมดในโฟลเดอร์นี้:

files = os.listdir(desktop)

เมธอดนี้คืนค่ารายการของชื่อไฟล์ทั้งหมดที่ปรากฏในโฟลเดอร์ Desktop มันไม่รวมเส้นทางของไฟล์ ตอนนี้เรามีรายการไฟล์นี้แล้ว เราสามารถพิมพ์มันทั้งหมดไปที่คอนโซลได้ เราจะพิมพ์เส้นทางไฟล์เต็มสำหรับแต่ละไฟล์โดยใช้ os.path.join และลูป for ของ Python:

for f in files:
    print(os.path.join(desktop, f))

โค้ดนี้วนซ้ำผ่านไฟล์ทั้งหมดในโฟลเดอร์ Desktop มันรวมชื่อของแต่ละไฟล์กับชื่อเส้นทางของโฟลเดอร์ Desktop โค้ดของเราคืนค่า:

/Users/James/Desktop/.DS_Store
/Users/James/Desktop/Notes.md
/Users/James/Desktop/To-dos.md

มีไฟล์สามไฟล์บนเดสก์ท็อปของฉัน: .DS_Store, Notes.md, และ To-dos.md เราใช้ os.path.join() เพื่อสร้างเส้นทางเต็มของแต่ละไฟล์

สรุป

เมธอด os.path.join รวมส่วนประกอบในชื่อเส้นทางเพื่อสร้างชื่อเส้นทางเต็ม

เมธอดนี้ทำให้การรวมองค์ประกอบสองหรือมากกว่าของชื่อเส้นทางเป็นเรื่องง่าย Os.path.join จะแทรกเครื่องหมายทับหน้า ("/") เข้าไปในชื่อเส้นทางโดยอัตโนมัติเมื่อจำเป็น

หากคุณต้องการเรียนรู้เพิ่มเติมเกี่ยวกับภาษาโปรแกรมมิ่ง Python ดูคู่มือ How to Learn Python ของเรา