Python có đi kèm với Pathlib không?
Nếu bạn đã lập trình bằng Python được một thời gian, có khả năng bạn đang sử dụng các hàm trong os, chẳng hạn như from pathlib import Path 3 Show
pathlib đã được giới thiệu trong Python 3. 4 và cung cấp một bộ trừu tượng khác để làm việc với các đường dẫn. Tuy nhiên, chỉ vì nó mới hơn, điều đó không có nghĩa là nó tốt hơn Vậy làm thế nào để quyết định cái nào là tốt nhất? Vòng một - Đường đơn Vòng đầu tiên của chúng tôi bao gồm các tác vụ thường được thực hiện với một đường dẫn tệp duy nhất
Tạo một đường dẫn tệp duy nhấtCác hệ điều hành thực hiện các cách tiếp cận khác nhau với đường dẫn tệp — ví dụ: LINUX sử dụng from pathlib import Path 4 trong đó Windows sử dụng from pathlib import Path 5 làm dấu phân cách trong đường dẫnDo sự phức tạp này, tính di động là mối quan tâm chính — cả from pathlib import Path 6 và pathlib đều cung cấp các cách di động để xây dựng đường dẫnos cung cấp from pathlib import Path 3 để tạo đường dẫn tệpimport os Trong pathlib, đường dẫn được hình thành bằng cách sử dụng toán tử chia from pathlib import Path 4 với một đối tượng from pathlib import Path 9 được khởi tạo________số 8Đối tượng from pathlib import Path 9 là trọng tâm của pathlib. Hầu như tất cả các chức năng chúng ta cần đều có thể được truy cập dưới dạng thuộc tính hoặc phương thức trên đối tượng nàyLấy thư mục chínhThư mục chính ở những nơi khác nhau trên các hệ điều hành khác nhau. Cả hai đối thủ của chúng tôi đều cung cấp một cách để lấy thư mục chính của người dùng sẽ hoạt động trên cả hệ thống UNIX và Windows
với hệ điều hành from pathlib import Path 3Và với pathlib from pathlib import Path Lấy thư mục làm việc hiện tạivới hệ điều hành from pathlib import Path 0Và với pathlib from pathlib import Path 6Làm việc với tên tệp và hậu tốTên của một tập tin bao gồm hậu tố Nhận cái này với os yêu cầu sử dụng from pathlib import Path 04from pathlib import Path 8Với pathlib, chúng ta có thể sử dụng thuộc tính from pathlib import Path 05 trên đối tượng from pathlib import Path 9from pathlib import Path 1Thân cây không bao gồm hậu tố. Để có được điều này với os yêu cầu sử dụng cả from pathlib import Path 04 và from pathlib import Path 08from pathlib import Path 4Với pathlib, chúng ta có thể sử dụng thuộc tính from pathlib import Path 09 trên đối tượng from pathlib import Path 9from pathlib import Path 7Hậu tố là phần cuối cùng của đường dẫn tệp, thường cho biết loại tệp. Để có được hậu tố với from pathlib import Path 6from pathlib import Path 0pathlib có from pathlib import Path 62 như một thuộc tính của đối tượng from pathlib import Path 9from pathlib import Path 1Tóm tắt — đường dẫn đơnVòng đầu tiên của chúng tôi đã kết thúc — người chiến thắng là pathlib. Một số điều mà ban giám khảo của chúng tôi thích
Vòng hai - Làm mọi thứ Vòng thứ hai của chúng tôi bao gồm các nhiệm vụ thường được thực hiện khi tạo ra mọi thứ, bao gồm
Làm thư mụcĐầu tiên với from pathlib import Path 1from pathlib import Path 2Và với pathlib from pathlib import Path 3Đôi khi chúng tôi muốn tạo một thư mục mới sâu hơn thư mục cuối cùng tồn tại. Thử điều này sẽ gây ra lỗi (vì from pathlib import Path 67 chưa tồn tại)from pathlib import Path 4Chúng ta có thể tránh điều này bằng cách sử dụng from pathlib import Path 68from pathlib import Path 5Một nguyên nhân khác gây ra lỗi là cố gắng tạo một thư mục đã tồn tại from pathlib import Path 6Chúng tôi thường sử dụng cả from pathlib import Path 68 và from pathlib import Path 80 bất cứ khi nào chúng tôi tạo một thư mụcfrom pathlib import Path 7Các ví dụ trên là tất cả về việc tạo một thư mục từ một đường dẫn. Đôi khi chúng ta cũng có một đường dẫn với tên tệp Đôi khi chúng tôi thực sự có một đường dẫn tệp đầy đủ (bao gồm cả thư mục và tên tệp). Nếu chúng tôi sử dụng from pathlib import Path 81 trên đường dẫn tệp đầy đủ, cuối cùng chúng tôi sẽ tạo một thư mục có cùng tên với tệp sắp có của chúng tôiChúng tôi có thể sử dụng from pathlib import Path 82 để truy cập thư mục kèm theo tệp của chúng tôi và gọi from pathlib import Path 83 trên thư mục đófrom pathlib import Path 8Ghi dữ liệu vào tệpHãy tưởng tượng chúng tôi có một bộ dữ liệu gồm 32 mẫu và chúng tôi muốn lưu từng mẫu vào một tệp trong from pathlib import Path 84Sử dụng os, nơi chúng tôi thiếu đối số from pathlib import Path 85 trong from pathlib import Path 86, có nghĩa là chúng tôi cần kiểm tra xem thư mục from pathlib import Path 87 có tồn tại hay không trước khi tạo nóChúng tôi có thể sử dụng from pathlib import Path 88 để in mẫu đầu tiên của mìnhfrom pathlib import Path 9Và sau đó sử dụng pathlib, nơi chúng ta có thể sử dụng from pathlib import Path 80 cùng với phương thức from pathlib import Path 10 trên đối tượng from pathlib import Path 9 của mìnhMột lần nữa sử dụng from pathlib import Path 88 để in ra mẫu đầu tiên của chúng tôi, do hạt giống ngẫu nhiên của chúng tôi, giống nhaufrom pathlib import Path 9Nối thêm dữ liệu vào một tập tinNhiệm vụ trên được ghi vào nhiều tệp. một tập tin cho mỗi mẫu. Những lần khác, chúng tôi muốn nối thêm vào một tệp, lợi thế là tất cả dữ liệu của chúng tôi được lưu trữ trong một tệp Những ví dụ này nối thêm văn bản vào một tệp duy nhất, from pathlib import Path 13. Đầu tiên với osVà với pathlib - lưu ý ở đây chúng tôi buộc phải sử dụng quản lý ngữ cảnh để có thể chuyển cờ nối thêm của from pathlib import Path 14Bây giờ dữ liệu của chúng tôi được lưu trữ trong một tệp (một dòng trên mỗi hàng) from pathlib import Path 31Tóm tắt - làm mọi thứDing ding ding. Người chiến thắng lại là pathlib. Một số điều mà ban giám khảo của chúng tôi thích trong vòng này
Vòng Ba - Đọc và Tìm Vòng thứ ba của chúng tôi là làm việc với những thứ đã tồn tại, chẳng hạn như
Đọc từ tệp văn bảnHãy mở một trong những tệp văn bản mà chúng tôi đã tạo trước đó Trước tiên, chúng tôi sẽ mở nó bằng os, yêu cầu quản lý ngữ cảnh để đóng tệp đúng cách sau khi mở from pathlib import Path 32Và sau đó chúng tôi sẽ sử dụng pathlib, nơi có thể mở, đọc và đóng tệp bằng phương thức from pathlib import Path 19 trên đối tượng from pathlib import Path 9 của chúng tôifrom pathlib import Path 33Tìm nhiều tệp theo cách đệ quyĐôi khi chúng tôi muốn tìm đường dẫn cho nhiều tệp. Chúng tôi muốn tìm đường dẫn sâu trong hệ thống tệp, tôi. e. , đệ quy Với os, chúng ta có thể sử dụng from pathlib import Path 41 để làm điều nàyVới pathlib, from pathlib import Path 42 là tốt nhấtfrom pathlib import Path 34from pathlib import Path 42 sẽ không trả lại thứ tự đường dẫn một cách xác định. Nếu bạn đang dựa vào đơn đặt hàng, hãy nhớ gọi cho from pathlib import Path 44 trên from pathlib import Path 45Tìm tất cả các thư mụcThường thì chúng tôi muốn có một danh sách các thư mục tại một đường dẫn nhất định. Ở đây chúng tôi sử dụng thư mục chính của người dùng. Chúng tôi không muốn điều này được đệ quy Đối với from pathlib import Path 6, chúng tôi sử dụng from pathlib import Path 47 để lặp qua một đường dẫn, với from pathlib import Path 48 để kiểm tra xem đường dẫn đó có phải là một thư mục khôngfrom pathlib import Path 35Đối với pathlib, chúng tôi sử dụng from pathlib import Path 49 và from pathlib import Path 70. Cả hai phương thức đều được gọi trên đối tượng from pathlib import Path 9from pathlib import Path 36Tìm tất cả các thư mục theo cách đệ quyĐôi khi chúng tôi muốn nhìn xa hơn một đường dẫn và tìm kiếm đệ quy các thư mục Chúng tôi có thể làm điều này bằng cách sử dụng from pathlib import Path 41Với pathlib, điều này được thực hiện tốt nhất bằng cách sử dụng from pathlib import Path 73from pathlib import Path 37Tóm tắt - đọc và tìmVòng thứ ba của chúng tôi đã kết thúc — người chiến thắng là pathlib. Một số điều mà ban giám khảo của chúng tôi thích
Vòng cuối cùng - Loại bỏ mọi thứ Vòng cuối cùng của chúng tôi là về việc loại bỏ mọi thứ
Xóa thư mụcCách tốt nhất để làm điều này là với from pathlib import Path 77, nó sẽ xóa thư mục ngay cả khi nó không trốngKhông có sự khác biệt thực sự giữa os và pathlib ngoại trừ khi tạo đường dẫn tệp. Ví dụ dưới đây sử dụng pathlib from pathlib import Path 38Đây thường là hành vi bạn muốn khi xóa thư mục. xóa ngay cả khi không trống Xóa tệpĐôi khi chúng tôi muốn xóa các tệp cụ thể khi chúng tôi biết đường dẫn Chúng ta có thể làm điều này với os from pathlib import Path 39Và với pathlib from pathlib import Path 0Bởi vì nhiệm vụ này rất phức tạp nên dưới đây sẽ tóm tắt Tóm tắt - xóa mọi thứVòng cuối cùng của chúng ta đã kết thúc — và đó là một trận hòa. Đây là nhiệm vụ cuối cùng và do sự phức tạp của cả hai cách tiếp cận cần sử dụng thư viện bổ sung from pathlib import Path 78Đó là một kết quả công bằng bởi các giám khảo của chúng tôi - có lẽ với một chút thiện cảm dành cho os, một đối thủ dũng cảm nhưng bị người kế nhiệm vượt trội Pathlib có trong thư viện chuẩn không?Mô-đun Pathlib trong Python cung cấp các lớp khác nhau biểu thị các đường dẫn hệ thống tệp với ngữ nghĩa phù hợp với các hệ điều hành khác nhau. Mô-đun này nằm trong các mô-đun tiện ích tiêu chuẩn của Python .
Làm cách nào để sử dụng Pathlib trong Python?Quảng cáo Python pathlib thay đổi thư mục Chúng tôi vào trong một thư mục khác với os' chdir. #. /usr/bin/python from pathlib import Path from os import chdir path = Path('. ') print(f'Thư mục làm việc hiện tại. {đường dẫn. cwd()}') chdir(path) print(f'Thư mục làm việc hiện tại. {đường dẫn. cwd()}') chdir('. ')
Pathlib có trong Python 2 không?Trăn 3. 2 trở lên được khuyến nghị, nhưng pathlib cũng có thể sử dụng được với Python 2. 7 và 2. 6 . |