สวัสดีก่อนอื่นคุณควรเข้าใจฟังก์ชั่นos.path.abspath (เส้นทาง)และos.path.relpath (เส้นทาง)
ในระยะสั้นos.path.abspath (เส้นทาง)ทำให้เส้นทางสัมพัทธ์กับเส้นทางที่แน่นอนเส้นทางที่แน่นอนและถ้าเส้นทางที่ให้มานั้นเป็นเส้นทางสัมบูรณ์แล้วฟังก์ชันจะส่งกลับเส้นทางเดียวกัน
ในทำนองเดียวกันos.path.relpath (เส้นทาง)ทำให้เส้นทางที่แน่นอนไปทางญาติ และหากเส้นทางที่ระบุเป็นเส้นทางสัมพัทธ์แล้วฟังก์ชันจะส่งกลับเส้นทางเดียวกัน
ตัวอย่างด้านล่างสามารถให้คุณเข้าใจแนวคิดด้านบนได้อย่างถูกต้อง :
สมมติว่าฉันมีไฟล์input_file_list.txtซึ่งมีรายการไฟล์อินพุตที่ต้องดำเนินการโดยสคริปต์ python ของฉัน
D: \ เข้มข้น \ input1.dic
D: \ เข้มข้น \ input2.dic
D: \ Copyioconc \ input_file_list.txt
ถ้าคุณดูด้านบนโครงสร้างโฟลเดอร์input_file_list.txtอยู่ในCopyofconcโฟลเดอร์และไฟล์ที่ต้องดำเนินการโดยสคริปต์หลามที่มีอยู่ในความเข้มข้นโฟลเดอร์
แต่เนื้อหาของไฟล์input_file_list.txtดังแสดงด้านล่าง:
.. \ เข้มข้น \ input1.dic
.. \ เข้มข้น \ input2.dic
และสคริปต์ python ของฉันมีอยู่ในไดรฟ์D:
และพา ธ สัมพัทธ์ที่ให้ไว้ในไฟล์input_file_list.txtนั้นสัมพันธ์กับพา ธ ของไฟล์input_file_list.txt
ดังนั้นเมื่อสคริปต์ python จะดำเนินการไดเรกทอรีการทำงานปัจจุบัน (ใช้os.getcwd ()เพื่อรับเส้นทาง)
ในฐานะที่เป็นทางญาติของฉันคือเทียบกับinput_file_list.txtที่เป็น"D: \ Copyofconc"ผมต้องเปลี่ยนไดเรกทอรีการทำงานปัจจุบันที่จะ"D: \ Copyofconc"
ดังนั้นฉันต้องใช้os.chdir ('D: \ Copyofconc')ดังนั้นไดเรกทอรีการทำงานปัจจุบันจะต้องเป็น"D: \ Copyofconc"Copyofconc"
ตอนนี้เพื่อรับไฟล์input1.dicและinput2.dicฉันจะอ่านบรรทัด ".. \ conc \ input1.dic" จากนั้นจะใช้คำสั่ง
input1_path = os.path.abspath ('.. \ conc \ input1.dic') (เพื่อเปลี่ยนพา ธ สัมพัทธ์เป็นพา ธ สัมบูรณ์นี่เป็นไดเรกทอรีการทำงานปัจจุบันคือ "D: \ Copyofconc", ไฟล์ ". \ conc \ input1 dic "จะสามารถเข้าถึงได้เมื่อเทียบกับ" D: \ Copyofconc ")
ดังนั้นinput1_pathจะเป็น "D: \ conc \ input1.dic"