Pathlib Python thành chuỗi
Khi tôi bắt đầu học Python, có một điều tôi luôn gặp khó khăn. xử lý các thư mục và đường dẫn tệp Show
Tôi nhớ cuộc đấu tranh để điều khiển các đường dẫn dưới dạng chuỗi bằng cách sử dụng mô-đun 5. Tôi đã liên tục tra cứu các thông báo lỗi liên quan đến thao tác đường dẫn không đúng cáchMô-đun 5 chưa bao giờ cảm thấy trực quan và thuận tiện đối với tôi, nhưng may mắn của tôi đã thay đổi khi 7 hạ cánh trong Python 3. 4. Đó là một luồng không khí trong lành, dễ sử dụng hơn nhiều và khiến tôi cảm thấy Pythonic hơnVấn đề duy nhất là. tìm các ví dụ về cách sử dụng nó thật khó; . Và vâng, tài liệu của Python rất tốt, nhưng đối với người mới, các ví dụ là bắt buộc Mặc dù các tài liệu bây giờ tốt hơn nhiều, nhưng chúng không hiển thị mô-đun theo cách giải quyết vấn đề. Đó là lý do tại sao tôi quyết định tạo cuốn sách dạy nấu ăn này Bài viết này là nơi tổng hợp tất cả những gì tôi biết về 7. Nó có nghĩa là một tài liệu tham khảo chứ không phải là một hướng dẫn tuyến tính. Vui lòng chuyển đến các phần phù hợp hơn với bạnTrong hướng dẫn này, chúng ta sẽ xem xét hàng chục trường hợp sử dụng như
Tôi hy vọng bạn vui Mục lục>>> Path('.', 'projects', 'python', 'source') WindowsPath('projects/python/source') >>> Path('.', 'projects', 'python') / Path('source') WindowsPath('projects/python/source') >>> Path('.', 'projects', 'python') / 'source' WindowsPath('projects/python/source') >>> Path('.', 'projects', 'python').joinpath('source') WindowsPath('projects/python/source') 7 trong Python là gì? 7 là một mô-đun Python được tạo để giúp làm việc với các đường dẫn trong hệ thống tệp dễ dàng hơn. Mô-đun này đã ra mắt trong Python 3. 4 và được đề xuất bởi PEP 428Trước Python 3. 4, mô-đun 5 từ thư viện tiêu chuẩn là mô-đun chuyển đến để xử lý các đường dẫn. 5 cung cấp một số chức năng thao tác các đường dẫn được biểu thị dưới dạng chuỗi Python đơn giản. Ví dụ: để nối hai đường dẫn bằng cách sử dụng 5, người ta có thể sử dụng hàm_______9_______4
Biểu diễn các đường dẫn dưới dạng chuỗi khuyến khích các nhà phát triển Python thiếu kinh nghiệm thực hiện các thao tác đường dẫn chung bằng phương thức chuỗi. Ví dụ: tham gia các đường dẫn bằng 5 thay vì sử dụng 6, điều này có thể dẫn đến các lỗi nhỏ và khiến mã khó sử dụng lại trên nhiều nền tảngHơn nữa, nếu bạn muốn các hoạt động của đường dẫn không phụ thuộc vào nền tảng, bạn sẽ cần nhiều cuộc gọi đến các hàm 5 khác nhau, chẳng hạn như 8, 9, v.v.Trong nỗ lực khắc phục những sự cố này, Python 3. 4 kết hợp mô-đun 7. Nó cung cấp một sự trừu tượng cấp cao hoạt động tốt trong các hệ thống POSIX, chẳng hạn như Linux cũng như Windows. Nó trừu tượng hóa cách biểu diễn của đường dẫn và cung cấp các hoạt động dưới dạng các phương thứcGiải phẫu của một >>> from pathlib import Path >>> Path.cwd() PosixPath('/home/miguel/Desktop/pathlib') 0Để dễ hiểu hơn về các thành phần cơ bản của một 02, trong phần này, chúng ta sẽ tìm hiểu các thành phần cơ bản của chúng
Cách chuyển đổi đường dẫn thành chuỗi 7 triển khai phương thức 04 kỳ diệu và chúng ta có thể sử dụng nó để chuyển đổi một đường dẫn thành chuỗi. Việc triển khai phương thức này có nghĩa là bạn có thể lấy biểu diễn chuỗi của nó bằng cách chuyển nó tới hàm tạo 05, như trong ví dụ bên dưới
Ví dụ trên minh họa một 06, nhưng bạn cũng có thể chuyển đổi WindowsPath thành chuỗi bằng cơ chế tương tự
Cách tham gia một đường dẫn bằng cách thêm các phần hoặc các đường dẫn khácMột trong những điều tôi thích nhất về 7 là việc kết hợp hai hoặc nhiều đường hoặc phần trở lên dễ dàng như thế nào. Có ba cách chính bạn có thể làm điều đó
Trên Windows, thay vào đó, 02 trả về một 11, nhưng nó hoạt động giống như trong Linux
Làm việc với các thư mục bằng cách sử dụng >>> Path('.', 'projects', 'python', 'source') WindowsPath('projects/python/source') >>> Path('.', 'projects', 'python') / Path('source') WindowsPath('projects/python/source') >>> Path('.', 'projects', 'python') / 'source' WindowsPath('projects/python/source') >>> Path('.', 'projects', 'python').joinpath('source') WindowsPath('projects/python/source') 7Trong phần này, chúng ta sẽ xem cách chúng ta có thể duyệt qua hoặc đi bộ qua các thư mục với 7. Và khi nói đến việc điều hướng các thư mục, chúng ta có thể làm nhiều việc, chẳng hạn nhưCách lấy thư mục làm việc hiện tại (cwd) với >>> Path('.', 'projects', 'python', 'source') WindowsPath('projects/python/source') >>> Path('.', 'projects', 'python') / Path('source') WindowsPath('projects/python/source') >>> Path('.', 'projects', 'python') / 'source' WindowsPath('projects/python/source') >>> Path('.', 'projects', 'python').joinpath('source') WindowsPath('projects/python/source') 7Mô-đun 7 cung cấp một classmethod 16 để lấy thư mục làm việc hiện tại trong Python. Nó trả về một phiên bản PosixPath trên Linux hoặc các hệ thống Unix khác như macOS hoặc OpenBSD. Dưới mui xe, 16 chỉ là một vỏ bọc cho 18 cổ điển
Trên Windows, nó trả về WindowsPath
Bạn cũng có thể in nó bằng cách chuyển đổi nó thành chuỗi bằng cách sử dụng chuỗi f chẳng hạn
Tái bút. nếu bạn Cách lấy thư mục chính với >>> Path('.', 'projects', 'python', 'source') WindowsPath('projects/python/source') >>> Path('.', 'projects', 'python') / Path('source') WindowsPath('projects/python/source') >>> Path('.', 'projects', 'python') / 'source' WindowsPath('projects/python/source') >>> Path('.', 'projects', 'python').joinpath('source') WindowsPath('projects/python/source') 7Khi 7 xuất hiện trong Python 3. 4, 02 không có phương thức điều hướng đến thư mục chính. Điều này đã thay đổi trên Python 3. 5, bao gồm cả phương pháp 22Trong Trăn 3. 4, người ta phải sử dụng 23, điều này thật khó xử và không trực quan 0Từ Python 3. 5 trở đi, bạn chỉ cần gọi 22 1 22 cũng hoạt động tốt trên WindowsCó thể bạn quan tâm 2Cách mở rộng thành phần đường dẫn ban đầu với >>> from pathlib import Path >>> Path.cwd() PosixPath('/home/miguel/Desktop/pathlib') 4Trong các hệ thống Unix, thư mục chính có thể được mở rộng bằng cách sử dụng 27 ( ký hiệu dấu ngã). Ví dụ: điều này cho phép chúng tôi biểu diễn các đường dẫn đầy đủ như thế này. 28 như vừa rồi. 29 3Mặc dù phổ biến hơn trên các hệ thống Unix, biểu diễn này cũng hoạt động trên Windows 4
Thật không may, mô-đun 7 không có bất kỳ phương thức nào để thực hiện thao tác nghịch đảo. Nếu bạn muốn cô đọng đường dẫn mở rộng trở lại phiên bản ngắn hơn, bạn cần lấy đường dẫn liên quan đến thư mục chính của bạn bằng cách sử dụng 32 và đặt 27 trước nó 5Tạo thư mục với >>> Path('.', 'projects', 'python', 'source') WindowsPath('projects/python/source') >>> Path('.', 'projects', 'python') / Path('source') WindowsPath('projects/python/source') >>> Path('.', 'projects', 'python') / 'source' WindowsPath('projects/python/source') >>> Path('.', 'projects', 'python').joinpath('source') WindowsPath('projects/python/source') 7Một thư mục không gì khác hơn là một vị trí để lưu trữ các tệp và các thư mục khác, còn được gọi là thư mục. 0 đi kèm với một phương thức để tạo các thư mục mới có tên là 36Phương thức này có ba đối số
6Tạo một thư mục đã tồn tạiKhi bạn có một đường dẫn thư mục và nó đã tồn tại, Python sẽ tăng 45 nếu bạn gọi 36 trên đó. Trong phần trước, chúng tôi đã đề cập ngắn gọn rằng điều này xảy ra bởi vì theo mặc định, đối số 43 được đặt thành 40 7Để tạo một thư mục đã tồn tại, bạn cần đặt 43 thành 41. Điều này hữu ích nếu bạn không muốn kiểm tra bằng cách sử dụng 54 hoặc xử lý các trường hợp ngoại lệ chẳng hạn. Một lợi ích khác là thư mục không trống, 7 sẽ không ghi đè lên nó 8Cách tạo đệ quy thư mục mẹ nếu không tồn tạiĐôi khi bạn có thể muốn tạo không chỉ một thư mục mà còn cả thư mục mẹ và thư mục con cùng một lúc Tin tốt là 36 có thể xử lý tốt các tình huống như thế này nhờ lập luận 38 của nó. Khi 38 được đặt thành 41, thì 42 sẽ tạo các thư mục mẹ bị thiếu; 9Cách liệt kê tất cả các tệp và thư mụcCó nhiều cách bạn có thể liệt kê các tệp trong một thư mục bằng Python's 7. Chúng ta sẽ thấy từng người trong phần nàyĐể liệt kê tất cả các tệp trong một thư mục, bao gồm cả các thư mục khác, bạn có thể sử dụng phương thức 63. Vì lý do hiệu suất, nó trả về một trình tạo mà bạn có thể sử dụng để lặp lại nó hoặc chỉ cần chuyển đổi thành danh sách để thuận tiện 0Sử dụng >>> from pathlib import Path >>> Path.cwd() PosixPath('/home/miguel/Desktop/pathlib') 5 để chỉ liệt kê các thư mụcChúng ta đã thấy rằng 65 trả về một danh sách các 02. Để chỉ liệt kê các thư mục trong một thư mục, bạn có thể sử dụng phương pháp 67. Ví dụ bên dưới sẽ lấy tất cả các tên thư mục bên trong thư mục
1Nhận danh sách tất cả các thư mục con trong thư mục hiện tại theo cách đệ quyTrong phần này, chúng ta sẽ xem cách điều hướng trong thư mục và thư mục con. Lần này chúng ta sẽ sử dụng một phương pháp khác từ 0 có tên là 69 2Như bạn thấy, 70 cũng sẽ in thư mục con 71Việc nhớ chuyển 72 đến 73 hơi khó chịu, nhưng có một cách để đơn giản hóa việc này bằng cách sử dụng 74 3Cách chỉ liệt kê các tệp có >>> from pathlib import Path >>> path = Path('/home/miguel/projects/blog/config.tar.gz') >>> path.drive '/' >>> path.root '/' >>> path.anchor '/' >>> path.parent PosixPath('/home/miguel/projects/blog') >>> path.name 'config.tar.gz' >>> path.stem 'config.tar' >>> path.suffix '.gz' >>> path.suffixes ['.tar', '.gz'] 75Giống như 7 cung cấp một phương thức để kiểm tra xem một đường dẫn có phải là một thư mục hay không, nó cũng cung cấp một phương thức để kiểm tra xem một đường dẫn có phải là một tệp không. Phương pháp này được gọi là 77 và bạn có thể sử dụng để lọc ra các thư mục và in tất cả các tên tệp trong một thư mục 4
Một trường hợp sử dụng thú vị khác là sử dụng 63 để đếm số lượng tệp trong một thư mục 5Cách lặp lại đệ quy qua tất cả các tệpTrong các phần trước, chúng tôi đã sử dụng 74 để liệt kê tất cả các thư mục theo cách đệ quy, chúng tôi có thể làm tương tự cho các tệp bằng cách lọc các đường dẫn bằng phương pháp 77 6Cách liệt kê đệ quy tất cả các tệp có phần mở rộng hoặc mẫu nhất địnhTrong ví dụ trước, chúng tôi liệt kê tất cả các tệp trong một thư mục, nhưng nếu chúng tôi muốn lọc theo phần mở rộng thì sao? Trong ví dụ bên dưới, chúng tôi liệt kê tất cả các tệp 85 theo cách đệ quy 7Chúng ta có thể sử dụng thủ thuật tương tự cho các loại tệp khác. Ví dụ: chúng tôi có thể muốn liệt kê tất cả các hình ảnh trong một thư mục hoặc thư mục con 8Chúng tôi thực sự có thể đơn giản hóa nó hơn nữa, chúng tôi chỉ có thể sử dụng 70 và 87 để khớp. (Cảm ơn 88 và 89 đã chỉ ra. ) 9Cách thay đổi thư mục bằng Python pathlibThật không may, 7 không có phương thức tích hợp để thay đổi thư mục. Tuy nhiên, có thể kết hợp nó với hàm 91 và sử dụng nó để thay đổi thư mục hiện tại thành một thư mục khác
0Cách xóa thư mục bằng >>> Path('.', 'projects', 'python', 'source') WindowsPath('projects/python/source') >>> Path('.', 'projects', 'python') / Path('source') WindowsPath('projects/python/source') >>> Path('.', 'projects', 'python') / 'source' WindowsPath('projects/python/source') >>> Path('.', 'projects', 'python').joinpath('source') WindowsPath('projects/python/source') 7Xóa thư mục bằng cách sử dụng 7 tùy thuộc vào việc thư mục có trống hay không. Để xóa một thư mục trống, chúng ta có thể sử dụng phương pháp 95 1Nếu chúng tôi đặt một số tệp hoặc thư mục khác bên trong và cố gắng xóa, 95 sẽ phát sinh lỗi 2Bây giờ, câu hỏi là. làm cách nào để xóa các thư mục không trống bằng 7?Đây là những gì chúng ta sẽ thấy tiếp theo Cách xóa một thư mục cùng với nội dung của nó bằng >>> Path('.', 'projects', 'python', 'source') WindowsPath('projects/python/source') >>> Path('.', 'projects', 'python') / Path('source') WindowsPath('projects/python/source') >>> Path('.', 'projects', 'python') / 'source' WindowsPath('projects/python/source') >>> Path('.', 'projects', 'python').joinpath('source') WindowsPath('projects/python/source') 7Để xóa một thư mục không trống, chúng ta cần xóa nội dung của nó, mọi thứ Để làm điều đó với 7, chúng ta cần tạo một hàm sử dụng 63 để đi bộ hoặc duyệt qua thư mục và
Hãy sử dụng ví dụ sau về một thư mục không trống với các thư mục và tệp lồng nhau trong đó 3Để loại bỏ nó, chúng ta có thể sử dụng hàm đệ quy sau 4Sau đó, chúng tôi gọi nó cho thư mục gốc, bao gồm 5Tôi cần thành thật mà nói, giải pháp này hoạt động tốt nhưng nó không phải là giải pháp phù hợp nhất. 7 không phù hợp với các loại hoạt động nàyTheo đề xuất của 04 từ reddit, cách tiếp cận tốt hơn là sử dụng 6Làm việc với các tập tinTrong phần này, chúng ta sẽ sử dụng 7 để thực hiện các thao tác trên một tệp, chẳng hạn, chúng ta sẽ xem cách chúng ta có thể
Cụ thể, chúng ta sẽ học cách Cách chạm (tạo trống) một tệp 7 cung cấp một phương thức để tạo một tệp trống tên là 10. Phương pháp này rất tiện dụng khi bạn cần tạo một tệp giữ chỗ nếu nó không tồn tại 7Chạm vào tệp có dấu thời gianĐể tạo một tệp trống có dấu thời gian, trước tiên chúng ta cần xác định định dạng dấu thời gian Một cách để làm điều đó là sử dụng 11 và 12. Đầu tiên, chúng tôi xác định định dạng ngày, sau đó chúng tôi sử dụng mô-đun 12 để tạo đối tượng ngày giờ. Sau đó, chúng tôi sử dụng 14 để lấy lại dấu thời gianKhi chúng tôi có dấu thời gian, chúng tôi chỉ có thể sử dụng chuỗi f để tạo tên tệp 8Cách chạm vào tệp và tạo thư mục mẹMột vấn đề phổ biến khác khi tạo các tệp trống là đặt chúng vào một thư mục chưa tồn tại. Lý do là 15 chỉ hoạt động nếu thư mục tồn tại. Để minh họa điều đó, hãy xem một ví dụ 9Nếu thư mục đích không tồn tại, 7 tăng 17. Để khắc phục điều đó, trước tiên chúng ta cần tạo thư mục, cách đơn giản nhất, như được mô tả trong phần , là sử dụng 18. Phương thức này tạo một thư mục trống bao gồm tất cả các thư mục mẹ 0Cách lấy tên tệp từ đường dẫnMột 02 không chỉ có phương thức mà còn có cả thuộc tính. Một trong số đó là 20, đúng như tên gọi của nó, trả về tên tệp của đường dẫn. Thuộc tính này bỏ qua các thư mục mẹ và chỉ trả lại tên tệp bao gồm phần mở rộng 1Cách lấy tên tệp không có phần mở rộngĐôi khi, bạn có thể cần truy xuất tên tệp không có phần mở rộng. Một cách tự nhiên để làm điều này là tách chuỗi trên dấu chấm. Tuy nhiên, 0 đi kèm với một thuộc tính trợ giúp khác có tên là 22, trả về thành phần cuối cùng của đường dẫn mà không có phần mở rộng 2Cách lấy phần mở rộng tệp từ tên tệp bằng cách sử dụng >>> Path('.', 'projects', 'python', 'source') WindowsPath('projects/python/source') >>> Path('.', 'projects', 'python') / Path('source') WindowsPath('projects/python/source') >>> Path('.', 'projects', 'python') / 'source' WindowsPath('projects/python/source') >>> Path('.', 'projects', 'python').joinpath('source') WindowsPath('projects/python/source') 7Nếu thuộc tính 22 trả về tên tệp không bao gồm phần mở rộng, làm thế nào chúng ta có thể làm điều ngược lại? Chúng ta có thể làm điều đó bằng cách sử dụng thuộc tính 25 3Một số tệp, chẳng hạn như 26 có hai phần là phần mở rộng và 25 sẽ chỉ trả về phần cuối cùng. Để có được toàn bộ phần mở rộng, bạn cần thuộc tính 28Thuộc tính này trả về danh sách tất cả các hậu tố cho đường dẫn đó. Sau đó, chúng ta có thể sử dụng nó để nối danh sách thành một chuỗi 4Cách mở tệp để đọc bằng >>> Path('.', 'projects', 'python', 'source') WindowsPath('projects/python/source') >>> Path('.', 'projects', 'python') / Path('source') WindowsPath('projects/python/source') >>> Path('.', 'projects', 'python') / 'source' WindowsPath('projects/python/source') >>> Path('.', 'projects', 'python').joinpath('source') WindowsPath('projects/python/source') 7Một tính năng tuyệt vời khác từ 7 là khả năng mở tệp được trỏ tới bằng đường dẫn. Hành vi tương tự như chức năng 31 tích hợp. Trên thực tế, nó chấp nhận khá nhiều tham số giống nhau 5Cách đọc tệp văn bản với >>> Path('.', 'projects', 'python', 'source') WindowsPath('projects/python/source') >>> Path('.', 'projects', 'python') / Path('source') WindowsPath('projects/python/source') >>> Path('.', 'projects', 'python') / 'source' WindowsPath('projects/python/source') >>> Path('.', 'projects', 'python').joinpath('source') WindowsPath('projects/python/source') 7Trong phần trước, chúng ta đã sử dụng phương thức 33 và hàm 34 để đọc nội dung của tệp văn bản dưới dạng chuỗi. Mặc dù nó hoạt động bình thường nhưng bạn vẫn cần đóng tệp hoặc sử dụng từ khóa 35 để đóng tệp tự động 7 đi kèm với một phương pháp 37 thực hiện điều đó cho bạn, thuận tiện hơn nhiều 6
Cách đọc tệp JSON từ đường dẫn với >>> Path('.', 'projects', 'python', 'source') WindowsPath('projects/python/source') >>> Path('.', 'projects', 'python') / Path('source') WindowsPath('projects/python/source') >>> Path('.', 'projects', 'python') / 'source' WindowsPath('projects/python/source') >>> Path('.', 'projects', 'python').joinpath('source') WindowsPath('projects/python/source') 7Một tệp JSON không gì khác hơn là một tệp văn bản được cấu trúc theo đặc tả JSON. Để đọc JSON, chúng ta có thể mở đường dẫn để đọc—như cách chúng ta làm với tệp văn bản—và sử dụng hàm 39 từ mô-đun 40 7Cách đọc tệp nhị phân với >>> Path('.', 'projects', 'python', 'source') WindowsPath('projects/python/source') >>> Path('.', 'projects', 'python') / Path('source') WindowsPath('projects/python/source') >>> Path('.', 'projects', 'python') / 'source' WindowsPath('projects/python/source') >>> Path('.', 'projects', 'python').joinpath('source') WindowsPath('projects/python/source') 7Đến đây nếu bạn biết cách đọc file text thì việc đọc file nhị phân sẽ dễ dàng. Chúng ta có thể làm điều này theo hai cách
Hãy bắt đầu với phương pháp đầu tiên 8Và cũng giống như 45, 7 đi kèm với một phương thức 47 có thể mở và đóng tệp cho bạn 9Cách mở tất cả các tệp trong một thư mục bằng PythonHãy tưởng tượng bạn cần một tập lệnh Python để tìm kiếm tất cả các tệp trong một thư mục và mở tất cả chúng. Có thể bạn muốn lọc theo tiện ích mở rộng hoặc bạn muốn thực hiện theo cách đệ quy. Nếu bạn đã làm theo hướng dẫn này ngay từ đầu, thì bây giờ bạn đã biết Để mở tất cả các tệp trong một thư mục, chúng ta có thể kết hợp 63 với 77 0Nếu bạn cần thực hiện đệ quy, chúng ta có thể sử dụng 74 thay vì 63 1Cách viết một tệp văn bản với >>> Path('.', 'projects', 'python', 'source') WindowsPath('projects/python/source') >>> Path('.', 'projects', 'python') / Path('source') WindowsPath('projects/python/source') >>> Path('.', 'projects', 'python') / 'source' WindowsPath('projects/python/source') >>> Path('.', 'projects', 'python').joinpath('source') WindowsPath('projects/python/source') 7Trong các phần trước, chúng ta đã biết cách đọc tệp văn bản bằng cách sử dụng 45Để ghi một tệp văn bản vào đĩa, 7 đi kèm với một 56. Lợi ích của việc sử dụng phương pháp này là nó ghi dữ liệu và đóng tệp cho bạn, đồng thời
2Cách ghi tệp JSON vào đường dẫn với >>> Path('.', 'projects', 'python', 'source') WindowsPath('projects/python/source') >>> Path('.', 'projects', 'python') / Path('source') WindowsPath('projects/python/source') >>> Path('.', 'projects', 'python') / 'source' WindowsPath('projects/python/source') >>> Path('.', 'projects', 'python').joinpath('source') WindowsPath('projects/python/source') 7Python đại diện cho các đối tượng JSON dưới dạng từ điển đơn giản, để ghi chúng vào một tệp dưới dạng JSON bằng cách sử dụng 7, chúng ta cần kết hợp hàm 60 và 33, giống như cách chúng ta đã làm để đọc JSON từ đĩa 3Cách ghi dữ liệu byte vào tệpĐể ghi byte vào một tệp, chúng ta có thể sử dụng phương thức 33 truyền cờ 63 hoặc phương thức 64 4Cách sao chép tệp bằng >>> Path('.', 'projects', 'python', 'source') WindowsPath('projects/python/source') >>> Path('.', 'projects', 'python') / Path('source') WindowsPath('projects/python/source') >>> Path('.', 'projects', 'python') / 'source' WindowsPath('projects/python/source') >>> Path('.', 'projects', 'python').joinpath('source') WindowsPath('projects/python/source') 7 7 không thể sao chép tập tin. Tuy nhiên, nếu chúng tôi có một tệp được biểu thị bằng một đường dẫn không có nghĩa là chúng tôi không thể sao chép nó. Có hai cách khác nhau để làm điều đó
Đối với phương án đầu tiên, chúng tôi sử dụng hàm 70 và chuyển đường dẫn nguồn và đích 5
Phương pháp thứ hai liên quan đến việc sao chép toàn bộ tệp, sau đó ghi tệp đó vào một đích khác 6
Một nhược điểm khác của phương pháp này là nó tải tệp vào bộ nhớ. Nếu tệp lớn, hãy ưu tiên 75. Nó hỗ trợ đệm và có thể, do đó tránh tiêu thụ bộ nhớ không kiểm soát 7Làm thế nào để xóa một tập tin với >>> Path('.', 'projects', 'python', 'source') WindowsPath('projects/python/source') >>> Path('.', 'projects', 'python') / Path('source') WindowsPath('projects/python/source') >>> Path('.', 'projects', 'python') / 'source' WindowsPath('projects/python/source') >>> Path('.', 'projects', 'python').joinpath('source') WindowsPath('projects/python/source') 7Bạn có thể xóa tệp hoặc liên kết tượng trưng bằng phương thức 01 8Kể từ Python 3. 8, phương thức này nhận một đối số tên là 78. Theo mặc định, 78 được đặt thành 40, có nghĩa là nó sẽ gây ra lỗi 17 nếu tệp không tồn tại 9Làm thế nào để xóa tất cả các tập tin trong một thư mục với >>> Path('.', 'projects', 'python', 'source') WindowsPath('projects/python/source') >>> Path('.', 'projects', 'python') / Path('source') WindowsPath('projects/python/source') >>> Path('.', 'projects', 'python') / 'source' WindowsPath('projects/python/source') >>> Path('.', 'projects', 'python').joinpath('source') WindowsPath('projects/python/source') 7Để xóa tất cả các tệp trong một thư mục, chúng ta cần duyệt qua nó và kiểm tra xem đường dẫn có phải là tệp không và nếu có, hãy gọi 01 trên đó như chúng ta đã thấy trong phần trướcĐể xem qua nội dung của một thư mục, chúng ta có thể sử dụng 63. Hãy xem xét thư mục sau 0Phương pháp này chỉ xóa các tệp ngay lập tức trong thư mục hiện tại, vì vậy nó không đệ quy 1Cách đổi tên tệp bằng cách sử dụng >>> Path('.', 'projects', 'python', 'source') WindowsPath('projects/python/source') >>> Path('.', 'projects', 'python') / Path('source') WindowsPath('projects/python/source') >>> Path('.', 'projects', 'python') / 'source' WindowsPath('projects/python/source') >>> Path('.', 'projects', 'python').joinpath('source') WindowsPath('projects/python/source') 7 7 cũng đi kèm với một phương thức để đổi tên các tệp có tên là 87. Nó lấy một đường dẫn tệp đích và đổi tên nguồn thành đích. Kể từ Python 3. 8, 88 trả về phiên bản Đường dẫn mới 2Chỉ đổi tên phần mở rộng tập tinNếu tất cả những gì bạn muốn là thay đổi phần mở rộng tệp thành một thứ khác, ví dụ: thay đổi từ 89 thành 90, bạn có thể sử dụng 87 kết hợp với phương thức 92, phương pháp này sẽ thực hiện như sau
Hãy xem một ví dụ nơi chúng tôi thay đổi tệp công thức của mình từ văn bản thuần túy 89 thành dấu xuống 90 3Làm cách nào để lấy thư mục mẹ của tệp có >>> Path('.', 'projects', 'python', 'source') WindowsPath('projects/python/source') >>> Path('.', 'projects', 'python') / Path('source') WindowsPath('projects/python/source') >>> Path('.', 'projects', 'python') / 'source' WindowsPath('projects/python/source') >>> Path('.', 'projects', 'python').joinpath('source') WindowsPath('projects/python/source') 7Đôi khi chúng tôi muốn lấy tên của thư mục mà tệp thuộc về. Bạn có thể nhận được điều đó thông qua một tài sản 02 tên là 97. Thuộc tính này đại diện cho cha logic của đường dẫn, có nghĩa là nó trả về cha của một tệp hoặc thư mục 4Phần kết luậnĐó là rất nhiều điều để học, và tôi hy vọng bạn thích nó giống như tôi thích viết nó 7 đã là một phần của thư viện chuẩn kể từ Python 3. 4 và đó là một giải pháp tuyệt vời khi xử lý các đường dẫnTrong hướng dẫn này, chúng tôi đã đề cập đến các trường hợp sử dụng quan trọng nhất trong đó 7 tỏa sáng qua vô số ví dụ
Làm cách nào để chuyển đổi chuỗi thành đường dẫn trong Python?Sử dụng hàm tạo của lớp Đường dẫn để chuyển Chuỗi thành Đường dẫn trong Python . Bạn cần nhập lớp Đường dẫn từ pathlib. Chúng tôi đã sử dụng hàm tạo Path() để chuyển đổi Chuỗi thành Đường dẫn. Hàm tạo này chấp nhận một chuỗi chứa đường dẫn bắt buộc và chuyển đổi chuỗi thành đường dẫn POSIX hoặc đường dẫn Windows dựa trên hệ thống của bạn.
Làm cách nào để sử dụng Pathlib trong Python?Pathlib hoạt động như thế nào? . py và đặt nó vào một thư mục cụ thể create a new Python file called example.py and put it inside a particular directory . Trong ví dụ này, chúng tôi nhập mô-đun Pathlib. Sau đó, chúng ta tạo một biến mới gọi là p để lưu trữ đường dẫn.
Đường dẫn hệ điều hành hay Pathlib nào tốt hơn?Với Pathlib, bạn có thể thực hiện tất cả các tác vụ xử lý tệp cơ bản mà bạn đã làm trước đây và có một số tính năng khác không có trong mô-đun HĐH. Điểm khác biệt chính là Pathlib trực quan và dễ sử dụng hơn . Tất cả các phương thức xử lý tệp hữu ích đều thuộc về các đối tượng Đường dẫn.
Tại sao bạn nên sử dụng Pathlib?Pathlib cho phép bạn dễ dàng lặp lại nội dung của thư mục đó, đồng thời nhận các tệp và thư mục khớp với một mẫu cụ thể . Hãy nhớ mô-đun toàn cầu mà bạn đã sử dụng để nhập cùng với mô-đun os để nhận các đường dẫn khớp với một mẫu? |