Xin chào, trước tiên bạn nên hiểu chức năng os.path.abspath (path) và os.path.relpath (path)
Trong os.path.abspath ngắn (đường dẫn) tạo một đường dẫn tương đối đến đường dẫn tuyệt đối . Và nếu đường dẫn được cung cấp chính nó là một đường dẫn tuyệt đối thì hàm trả về cùng một đường dẫn.
tương tự os.path.relpath (đường dẫn) tạo một đường dẫn tuyệt đối đến đường dẫn tương đối . Và nếu đường dẫn được cung cấp chính nó là một đường dẫn tương đối thì hàm trả về cùng một đường dẫn.
Ví dụ dưới đây có thể cho phép bạn hiểu đúng khái niệm trên :
giả sử tôi có một tập tin input_file_list.txt chứa danh sách các tệp đầu vào được xử lý bởi tập lệnh python của tôi.
D: \ conc \ input1.dic
D: \ conc \ input2.dic
D: \ Copyioconc \ input_file_list.txt
Nếu bạn thấy cấu trúc thư mục ở trên, input_file_list.txt có trong thư mục Copyofconc và các tệp được xử lý bởi tập lệnh python có mặt trong conc thư mục
Nhưng nội dung của tệp input_file_list.txt như dưới đây:
.. \ conc \ input1.dic
.. \ conc \ input2.dic
Và kịch bản python của tôi có mặt trong D: drive.
Và đường dẫn tương đối được cung cấp trong tệp input_file_list.txt có liên quan đến đường dẫn của tệp input_file_list.txt .
Vì vậy, khi kịch bản python sẽ thực thi thư mục làm việc hiện tại (sử dụng os.getcwd () để lấy đường dẫn)
Vì đường dẫn tương đối của tôi có liên quan đến input_file_list.txt , đó là "D: \ Copyofconc" , tôi phải thay đổi thư mục làm việc hiện tại thành "D: \ Copyofconc" .
Vì vậy, tôi phải sử dụng os.chdir ('D: \ Copyofconc') , vì vậy thư mục làm việc hiện tại sẽ là "D: \ Copyofconc" .
Bây giờ để có được các tập tin input1.dic và input2.dic , tôi sẽ đọc các dòng ".. \ conc \ input1.dic" sau đó sẽ sử dụng lệnh
input1_path = os.path.abspath ('.. \ conc \ input1.dic') (để thay đổi đường dẫn tương đối thành đường dẫn tuyệt đối. Ở đây, thư mục làm việc hiện tại là "D: \ Copyofconc", tệp ". \ conc \ input1. dic "sẽ được truy cập liên quan đến" D: \ Copyofconc ")
vì vậy input1_path sẽ là "D: \ conc \ input1.dic"