Mỗi hệ điều hành có các quy tắc khác nhau để xây dựng đường dẫn tệp. Ví dụ: Linux sử dụng dấu gạch chéo lên cho đường dẫn, trong khi Windows sử dụng dấu gạch chéo ngược
Sự khác biệt nhỏ này có thể gây ra sự cố nếu bạn đang làm việc trên một dự án và bạn muốn các nhà phát triển khác đến từ các hệ điều hành khác nhau mở rộng mã của bạn
May mắn thay, nếu bạn đang viết mã bằng Python, mô-đun Pathlib sẽ thực hiện công việc nặng nhọc bằng cách cho phép bạn đảm bảo rằng đường dẫn tệp của bạn hoạt động giống nhau trong các hệ điều hành khác nhau. Ngoài ra, nó cung cấp các chức năng và hoạt động để giúp bạn tiết kiệm thời gian trong khi xử lý và thao tác với các đường dẫn
điều kiện tiên quyết
Pathlib là mặc định với Python >= 3. 4. Tuy nhiên, nếu bạn đang sử dụng phiên bản Python thấp hơn 3. 4, bạn sẽ không có quyền truy cập vào mô-đun này
Pathlib hoạt động như thế nào?
Để hiểu cách bạn có thể xây dựng một đường dẫn cơ bản bằng Pathlib, hãy tạo một tệp Python mới có tên là In [*]: pathlib.PurePosixPath('setup.py') Out[*]: PurePosixPath('setup.py') 3 và đặt nó vào một thư mục cụ thể
Mở tệp và nhập nội dung sau
import pathlib p = pathlib.Path(__file__) print(p) ví dụ. pyTrong 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 có tên là In [*]: pathlib.PurePosixPath('setup.py') Out[*]: PurePosixPath('setup.py') 4 để lưu trữ đường dẫn. Ở đây, chúng tôi sử dụng đối tượng Đường dẫn từ Pathlib với một biến tích hợp trong Python có tên là __file__ để chỉ đường dẫn tệp mà chúng tôi hiện đang viết trong đó In [*]: pathlib.PurePosixPath('setup.py') Out[*]: PurePosixPath('setup.py') 3
Nếu chúng tôi in In [*]: pathlib.PurePosixPath('setup.py') Out[*]: PurePosixPath('setup.py') 4, chúng tôi sẽ nhận được đường dẫn đến tệp mà chúng tôi hiện đang ở
/home/rochdikhalid/dev/src/package/example.pyNhư được hiển thị ở trên, Pathlib tạo đường dẫn đến tệp này bằng cách đặt tập lệnh cụ thể này vào đối tượng Đường dẫn. Pathlib chứa nhiều đối tượng như In [*]: pathlib.PurePosixPath('setup.py') Out[*]: PurePosixPath('setup.py') 7 và In [*]: pathlib.PurePosixPath('setup.py') Out[*]: PurePosixPath('setup.py') 8, chúng ta sẽ tìm hiểu thêm trong các phần sau
Trước khi chúng ta chuyển sang phần này, Pathlib chia các đường dẫn hệ thống tệp thành hai lớp khác nhau đại diện cho hai loại đối tượng đường dẫn. Con đường tinh khiết và con đường cụ thể
Đường dẫn thuần túy cung cấp các tiện ích để xử lý và thao tác trên đường dẫn tệp của bạn mà không cần thực hiện các thao tác ghi, trong khi đường dẫn cụ thể cho phép bạn thao tác và thực hiện các thao tác ghi trên đường dẫn tệp của mình
Nói cách khác, một con đường cụ thể là một lớp con của một con đường thuần túy. Nó kế thừa các thao tác từ lớp cha và bổ sung thêm các thao tác vào/ra thực hiện lời gọi hệ thống
Đường dẫn thuần túy trong Python
Đường dẫn thuần túy thao tác đường dẫn tệp trên máy của bạn ngay cả khi nó thuộc hệ điều hành khác
Ví dụ: giả sử bạn đang dùng Linux và bạn muốn sử dụng đường dẫn tệp Windows. Ở đây, các đối tượng lớp Đường dẫn thuần túy sẽ giúp bạn có được đường dẫn hoạt động trên máy của mình với một số thao tác cơ bản như tạo đường dẫn con hoặc truy cập các phần riêng lẻ của đường dẫn
Nhưng các đường dẫn thuần túy sẽ không thể bắt chước một số hoạt động khác như tạo thư mục hoặc tệp vì bạn không thực sự ở trong hệ điều hành đó
Cách sử dụng đường dẫn thuần túy
Như bạn có thể thấy trong sơ đồ trên, các đường dẫn thuần túy bao gồm ba lớp xử lý bất kỳ đường dẫn hệ thống tệp nào trên máy của bạn
PurePath() là nút gốc cung cấp các hoạt động xử lý cho mọi đối tượng đường dẫn trong Pathlib
Khi bạn khởi tạo In [*]: pathlib.PurePosixPath('setup.py') Out[*]: PurePosixPath('setup.py') 8, nó sẽ tạo hai lớp để xử lý các đường dẫn Windows và đường dẫn không phải Windows. In [*]: pathlib.PurePosixPath('setup.py') Out[*]: PurePosixPath('setup.py') 8 tạo một đối tượng đường dẫn chung "đường dẫn bất khả tri", bất kể bạn đang chạy trên hệ điều hành nào
In [*]: pathlib.PurePath('setup.py') Out[*]: PurePosixPath('setup.py')PurePath() trong ví dụ trên tạo ra một In [*]: pathlib.PureWindowsPath('setup.py') Out[*]: PureWindowsPath('setup.py') 1 bởi vì chúng tôi cho rằng chúng tôi đang chạy trên máy Linux. Nhưng nếu bạn khởi tạo nó trên Windows, bạn sẽ nhận được một cái gì đó như In [*]: pathlib.PureWindowsPath('setup.py') Out[*]: PureWindowsPath('setup.py') 2
PurePosixPath() là nút con của PurePath() được triển khai cho các đường dẫn hệ thống tệp không phải của Windows
In [*]: pathlib.PurePosixPath('setup.py') Out[*]: PurePosixPath('setup.py')Bạn sẽ không gặp bất kỳ lỗi nào nếu bạn khởi tạo In [*]: pathlib.PureWindowsPath('setup.py') Out[*]: PureWindowsPath('setup.py') 1 trên Windows vì quá đơn giản, lớp này không thực hiện lời gọi hệ thống
PureWindowsPath() là nút con của PurePath() được triển khai cho các đường dẫn hệ thống tệp Windows
In [*]: pathlib.PureWindowsPath('setup.py') Out[*]: PureWindowsPath('setup.py')Điều tương tự cũng áp dụng cho In [*]: pathlib.PureWindowsPath('setup.py') Out[*]: PureWindowsPath('setup.py') 4 vì lớp này không cung cấp lời gọi hệ thống, do đó, việc khởi tạo nó sẽ không gây ra bất kỳ lỗi nào cho các hệ điều hành khác
Thuộc tính đường dẫn thuần túy
Mỗi phân lớp trong In [*]: pathlib.PurePosixPath('setup.py') Out[*]: PurePosixPath('setup.py') 8 cung cấp các thuộc tính sau
PurePath(). cha mẹ xuất ra cha mẹ của đường dẫn
In [*]: pathlib.PurePath('/src/goo/scripts/main.py').parent Out[*]: PurePosixPath('/src/goo/scripts')Trong ví dụ trên, chúng tôi đang sử dụng thuộc tính In [*]: pathlib.PureWindowsPath('setup.py') Out[*]: PureWindowsPath('setup.py') 6 để lấy đường dẫn của cha logic của In [*]: pathlib.PureWindowsPath('setup.py') Out[*]: PureWindowsPath('setup.py') 7
PurePath(). cha mẹ [] xuất ra tổ tiên của đường dẫn
In [*]: p = pathlib.PurePath('/src/goo/scripts/main.py') p.parents[0] Out[*]: PurePosixPath('/src/goo/scripts') In [*]: p.parents[1] Out[*]: PurePosixPath('/src/goo')Bạn phải luôn chỉ định chỉ mục tổ tiên trong ngoặc vuông như đã thấy ở trên. Trong Trăn 3. 10 trở lên, bạn có thể sử dụng các lát cắt và giá trị chỉ số âm
PurePath(). name cung cấp tên của thành phần cuối cùng trong đường dẫn của bạn
In [*]: pathlib.PurePath('/src/goo/scripts/main.py').name Out[*]: 'main.py'Trong ví dụ này, thành phần đường dẫn cuối cùng là In [*]: pathlib.PureWindowsPath('setup.py') Out[*]: PureWindowsPath('setup.py') 8. Vì vậy, thuộc tính In [*]: pathlib.PureWindowsPath('setup.py') Out[*]: PureWindowsPath('setup.py') 9 xuất ra tên của tệp In [*]: pathlib.PureWindowsPath('setup.py') Out[*]: PureWindowsPath('setup.py') 8 là tệp chính với hậu tố của nó. py
Mặt khác, PurePath(). hậu tố cung cấp phần mở rộng tệp của thành phần cuối cùng trong đường dẫn của bạn
In [*]: pathlib.PurePath('/src/goo/scripts/main.py').suffix Out[*]: '.py'So với thuộc tính In [*]: pathlib.PureWindowsPath('setup.py') Out[*]: PureWindowsPath('setup.py') 9, thuộc tính In [*]: pathlib.PurePath('/src/goo/scripts/main.py').parent Out[*]: PurePosixPath('/src/goo/scripts') 2 xuất phần mở rộng tệp và loại trừ tên tệp
PurePath(). gốc chỉ xuất ra tên của thành phần cuối cùng trong đường dẫn của bạn mà không có hậu tố
In [*]: pathlib.PurePath('/src/goo/scripts/main.py').stem Out[*]: 'main'Như đã thấy ở trên, thuộc tính In [*]: pathlib.PurePath('/src/goo/scripts/main.py').parent Out[*]: PurePosixPath('/src/goo/scripts') 3 không bao gồm hậu tố của thành phần cuối cùng In [*]: pathlib.PureWindowsPath('setup.py') Out[*]: PureWindowsPath('setup.py') 8 và chỉ cung cấp tên của tệp
Phương pháp đường dẫn thuần túy
Mỗi lớp con của In [*]: pathlib.PurePosixPath('setup.py') Out[*]: PurePosixPath('setup.py') 8 cung cấp các phương thức sau
PurePath(). is_absolute() kiểm tra xem đường dẫn của bạn có tuyệt đối hay không
/home/rochdikhalid/dev/src/package/example.py0Lưu ý rằng đường dẫn tuyệt đối bao gồm tên gốc và tên ổ đĩa. Trong trường hợp này, In [*]: pathlib.PurePosixPath('setup.py') Out[*]: PurePosixPath('setup.py') 8 không cho phép chúng tôi biết tên ổ đĩa
Nếu bạn sử dụng In [*]: pathlib.PureWindowsPath('setup.py') Out[*]: PureWindowsPath('setup.py') 4, bạn có thể biểu diễn một đường dẫn tuyệt đối có chứa tên ổ đĩa như In [*]: pathlib.PurePath('/src/goo/scripts/main.py').parent Out[*]: PurePosixPath('/src/goo/scripts') 8
PurePath(). is_relative() kiểm tra xem đường dẫn có thuộc đường dẫn đã cho khác hay không
/home/rochdikhalid/dev/src/package/example.py1Trong ví dụ này, đường dẫn đã cho In [*]: pathlib.PurePath('/src/goo/scripts/main.py').parent Out[*]: PurePosixPath('/src/goo/scripts') 9 là một phần của hoặc thuộc về đường dẫn In [*]: pathlib.PurePosixPath('setup.py') Out[*]: PurePosixPath('setup.py') 4, trong khi đường dẫn đã cho khác In [*]: p = pathlib.PurePath('/src/goo/scripts/main.py') p.parents[0] Out[*]: PurePosixPath('/src/goo/scripts') In [*]: p.parents[1] Out[*]: PurePosixPath('/src/goo') 1 tăng In [*]: p = pathlib.PurePath('/src/goo/scripts/main.py') p.parents[0] Out[*]: PurePosixPath('/src/goo/scripts') In [*]: p.parents[1] Out[*]: PurePosixPath('/src/goo') 2 vì nó không có mối quan hệ tương đối với đường dẫn In [*]: pathlib.PurePosixPath('setup.py') Out[*]: PurePosixPath('setup.py') 4
PurePath(). joinpath() nối đường dẫn với các đối số đã cho (đường dẫn con)
/home/rochdikhalid/dev/src/package/example.py2Lưu ý rằng không cần thêm dấu gạch chéo vào các đối số đã cho, vì phương thức In [*]: p = pathlib.PurePath('/src/goo/scripts/main.py') p.parents[0] Out[*]: PurePosixPath('/src/goo/scripts') In [*]: p.parents[1] Out[*]: PurePosixPath('/src/goo') 4 xử lý việc này cho bạn
PurePath(). match() kiểm tra xem đường dẫn có khớp với một mẫu nhất định hay không
/home/rochdikhalid/dev/src/package/example.py3Dựa trên các ví dụ trên, mẫu phải khớp với đường dẫn. Nếu mẫu đã cho là tuyệt đối, thì đường dẫn cũng phải tuyệt đối
PurePath(). with_name() thay đổi tên của thành phần cuối cùng bằng hậu tố của nó
/home/rochdikhalid/dev/src/package/example.py4Phương thức In [*]: p = pathlib.PurePath('/src/goo/scripts/main.py') p.parents[0] Out[*]: PurePosixPath('/src/goo/scripts') In [*]: p.parents[1] Out[*]: PurePosixPath('/src/goo') 5 không thay đổi vĩnh viễn tên của thành phần cuối cùng. Ngoài ra, nếu đường dẫn đã cho không chứa tên, sẽ xảy ra lỗi như đã đề cập trong
PurePath(). with_stem() chỉ thay đổi tên của thành phần cuối cùng của đường dẫn
/home/rochdikhalid/dev/src/package/example.py5Điều này tương tự như phương pháp In [*]: p = pathlib.PurePath('/src/goo/scripts/main.py') p.parents[0] Out[*]: PurePosixPath('/src/goo/scripts') In [*]: p.parents[1] Out[*]: PurePosixPath('/src/goo') 5. In [*]: p = pathlib.PurePath('/src/goo/scripts/main.py') p.parents[0] Out[*]: PurePosixPath('/src/goo/scripts') In [*]: p.parents[1] Out[*]: PurePosixPath('/src/goo') 7 tạm thời thay đổi tên của thành phần cuối cùng. Ngoài ra, nếu đường dẫn đã cho không chứa tên, sẽ xảy ra lỗi
PurePath(). with_suffix() tạm thời thay đổi hậu tố hoặc phần mở rộng của thành phần cuối cùng trong đường dẫn của bạn.
/home/rochdikhalid/dev/src/package/example.py6Nếu tên của đường dẫn đã cho không chứa hậu tố, phương thức In [*]: p = pathlib.PurePath('/src/goo/scripts/main.py') p.parents[0] Out[*]: PurePosixPath('/src/goo/scripts') In [*]: p.parents[1] Out[*]: PurePosixPath('/src/goo') 8 sẽ thêm hậu tố cho bạn
/home/rochdikhalid/dev/src/package/example.py7Tuy nhiên, nếu chúng tôi không bao gồm hậu tố và chúng tôi để trống đối số In [*]: p = pathlib.PurePath('/src/goo/scripts/main.py') p.parents[0] Out[*]: PurePosixPath('/src/goo/scripts') In [*]: p.parents[1] Out[*]: PurePosixPath('/src/goo') 9, thì hậu tố hiện tại sẽ bị xóa
/home/rochdikhalid/dev/src/package/example.py8Một số phương thức như In [*]: p = pathlib.PurePath('/src/goo/scripts/main.py') p.parents[0] Out[*]: PurePosixPath('/src/goo/scripts') In [*]: p.parents[1] Out[*]: PurePosixPath('/src/goo') 7 và In [*]: pathlib.PurePath('/src/goo/scripts/main.py').name Out[*]: 'main.py' 1 gần đây đã được thêm vào Python 3. 9 trở lên. Vì vậy, nếu bạn gọi các phương thức này bằng Python 3. 8 hoặc thấp hơn, một lỗi thuộc tính được nâng lên
Đường dẫn bê tông trong Python
Đường dẫn bê tông cho phép bạn xử lý, thao tác và thực hiện các thao tác ghi trên các đường dẫn hệ thống tệp khác nhau
Nói cách khác, loại đối tượng đường dẫn này giúp bạn tạo ví dụ như một tệp mới, một thư mục mới và thực hiện các thao tác nhập/xuất khác khi không ở trong hệ điều hành đó
Cách sử dụng đường bê tông
Đường dẫn cụ thể xử lý bất kỳ đường dẫn hệ thống tệp nào và thực hiện cuộc gọi hệ thống trên máy của bạn. Các đối tượng đường dẫn đó là các đường dẫn con của các đường dẫn thuần túy và bao gồm ba lớp con giống như các đối tượng thuần túy
Path() là nút con của In [*]: pathlib.PurePosixPath('setup.py') Out[*]: PurePosixPath('setup.py') 8, nó cung cấp các thao tác xử lý với khả năng thực hiện các thao tác ghi trên đường dẫn của bạn
Khi bạn khởi tạo In [*]: pathlib.PurePath('/src/goo/scripts/main.py').name Out[*]: 'main.py' 3, nó sẽ tạo hai lớp để xử lý các đường dẫn Windows và đường dẫn không phải Windows. Giống như In [*]: pathlib.PurePosixPath('setup.py') Out[*]: PurePosixPath('setup.py') 8, In [*]: pathlib.PurePath('/src/goo/scripts/main.py').name Out[*]: 'main.py' 3 cũng tạo một đối tượng đường dẫn chung "đường dẫn bất khả tri", bất kể bạn đang chạy trên hệ điều hành nào
/home/rochdikhalid/dev/src/package/example.py9In [*]: pathlib.PurePath('/src/goo/scripts/main.py').name Out[*]: 'main.py' 3 trong ví dụ trên tạo ra một In [*]: pathlib.PurePosixPath('setup.py') Out[*]: PurePosixPath('setup.py') 7 vì chúng tôi cho rằng chúng tôi đang chạy trên máy Linux. Nhưng nếu bạn khởi tạo nó trên Windows, bạn sẽ nhận được một cái gì đó như In [*]: pathlib.PurePath('/src/goo/scripts/main.py').name Out[*]: 'main.py' 8
PosixPath() là nút con của In [*]: pathlib.PurePath('/src/goo/scripts/main.py').name Out[*]: 'main.py' 3 và In [*]: pathlib.PureWindowsPath('setup.py') Out[*]: PureWindowsPath('setup.py') 1, được triển khai để xử lý và thao tác các đường dẫn hệ thống tệp không phải của Windows
In [*]: pathlib.PurePath('setup.py') Out[*]: PurePosixPath('setup.py') 0Bạn sẽ gặp lỗi nếu khởi tạo In [*]: pathlib.PurePosixPath('setup.py') Out[*]: PurePosixPath('setup.py') 7 trên máy Windows vì bạn không thể thực hiện cuộc gọi hệ thống khi đang chạy trên một hệ điều hành khác
WindowsPath() là nút con của In [*]: pathlib.PurePath('/src/goo/scripts/main.py').name Out[*]: 'main.py' 3 và In [*]: pathlib.PureWindowsPath('setup.py') Out[*]: PureWindowsPath('setup.py') 4 được triển khai cho các đường dẫn hệ thống tệp Windows
In [*]: pathlib.PurePath('setup.py') Out[*]: PurePosixPath('setup.py') 1Điều tương tự cũng áp dụng cho In [*]: pathlib.PurePath('/src/goo/scripts/main.py').suffix Out[*]: '.py' 4 vì bạn đang chạy trên một hệ điều hành khác – vì vậy việc khởi tạo nó sẽ gây ra lỗi
Thuộc tính của đường dẫn bê tông
Vì đường dẫn cụ thể là lớp con của đường dẫn thuần túy, bạn có thể làm mọi thứ với đường dẫn cụ thể bằng cách sử dụng thuộc tính In [*]: pathlib.PurePosixPath('setup.py') Out[*]: PurePosixPath('setup.py') 8. Điều này có nghĩa là chúng ta có thể sử dụng, ví dụ, thuộc tính In [*]: pathlib.PurePath('/src/goo/scripts/main.py').suffix Out[*]: '.py' 6 để thêm hậu tố vào một đường dẫn cụ thể
In [*]: pathlib.PurePath('setup.py') Out[*]: PurePosixPath('setup.py') 2Hoặc, bạn có thể kiểm tra xem đường dẫn đã cho có liên quan đến đường dẫn ban đầu không
In [*]: pathlib.PurePath('setup.py') Out[*]: PurePosixPath('setup.py') 3Luôn nhớ rằng các đường dẫn cụ thể kế thừa các thao tác xử lý từ các đường dẫn thuần túy và thêm các thao tác ghi để thực hiện lời gọi hệ thống và cấu hình đầu vào/đầu ra
Phương pháp đường bê tông
Mỗi lớp con của In [*]: pathlib.PurePath('/src/goo/scripts/main.py').name Out[*]: 'main.py' 3 cung cấp các phương thức sau để xử lý các đường dẫn và thực hiện các cuộc gọi hệ thống
Con đường(). iterdir() trả về nội dung của một thư mục. Giả sử chúng ta có thư mục sau chứa các tệp sau
In [*]: pathlib.PurePath('setup.py') Out[*]: PurePosixPath('setup.py') 4thư mục dữ liệuĐể trả về nội dung của thư mục In [*]: p = pathlib.PurePath('/src/goo/scripts/main.py') p.parents[0] Out[*]: PurePosixPath('/src/goo/scripts') In [*]: p.parents[1] Out[*]: PurePosixPath('/src/goo') 1, bạn có thể sử dụng phương thức In [*]: pathlib.PurePath('/src/goo/scripts/main.py').suffix Out[*]: '.py' 9 tại đây
In [*]: pathlib.PurePath('setup.py') Out[*]: PurePosixPath('setup.py') 5Phương thức In [*]: pathlib.PurePath('/src/goo/scripts/main.py').suffix Out[*]: '.py' 9 tạo một trình vòng lặp liệt kê các tệp một cách ngẫu nhiên
Con đường(). tồn tại() kiểm tra xem tệp/thư mục có tồn tại trong đường dẫn hiện tại không. Hãy sử dụng thư mục của ví dụ trước (thư mục hiện tại của chúng ta là In [*]: p = pathlib.PurePath('/src/goo/scripts/main.py') p.parents[0] Out[*]: PurePosixPath('/src/goo/scripts') In [*]: p.parents[1] Out[*]: PurePosixPath('/src/goo') 1)
In [*]: pathlib.PurePath('setup.py') Out[*]: PurePosixPath('setup.py') 6Các. phương thức tồn tại () trả về In [*]: pathlib.PurePath('/src/goo/scripts/main.py').stem Out[*]: 'main' 2 vì tệp đã cho tồn tại trong thư mục In [*]: pathlib.PurePath('/src/goo/scripts/main.py').stem Out[*]: 'main' 3. Phương thức trả về In [*]: p = pathlib.PurePath('/src/goo/scripts/main.py') p.parents[0] Out[*]: PurePosixPath('/src/goo/scripts') In [*]: p.parents[1] Out[*]: PurePosixPath('/src/goo') 2 nếu tệp không tồn tại
In [*]: pathlib.PurePath('setup.py') Out[*]: PurePosixPath('setup.py') 7Điều tương tự cũng áp dụng cho các thư mục, phương thức trả về In [*]: pathlib.PurePath('/src/goo/scripts/main.py').stem Out[*]: 'main' 2 nếu thư mục đã cho tồn tại và trả về In [*]: p = pathlib.PurePath('/src/goo/scripts/main.py') p.parents[0] Out[*]: PurePosixPath('/src/goo/scripts') In [*]: p.parents[1] Out[*]: PurePosixPath('/src/goo') 2 nếu không
Con đường(). mkdir() tạo một thư mục mới tại một đường dẫn nhất định
In [*]: pathlib.PurePath('setup.py') Out[*]: PurePosixPath('setup.py') 8Theo tài liệu chính thức, phương thức In [*]: pathlib.PurePath('/src/goo/scripts/main.py').stem Out[*]: 'main' 7 có ba đối số. Hiện tại chúng tôi sẽ chỉ tập trung vào In [*]: pathlib.PurePath('/src/goo/scripts/main.py').stem Out[*]: 'main' 8 và In [*]: pathlib.PurePath('/src/goo/scripts/main.py').stem Out[*]: 'main' 9
Cả hai đối số được đặt thành In [*]: p = pathlib.PurePath('/src/goo/scripts/main.py') p.parents[0] Out[*]: PurePosixPath('/src/goo/scripts') In [*]: p.parents[1] Out[*]: PurePosixPath('/src/goo') 2 làm mặc định. /home/rochdikhalid/dev/src/package/example.py01 gây ra lỗi FileNotFound trong trường hợp thiếu thư mục gốc, trong khi In [*]: pathlib.PurePath('/src/goo/scripts/main.py').stem Out[*]: 'main' 9 gây ra lỗi FileExists nếu thư mục đã cho đã tồn tại
Trong ví dụ trên, bạn có thể đặt các đối số thành In [*]: pathlib.PurePath('/src/goo/scripts/main.py').stem Out[*]: 'main' 2 để bỏ qua các lỗi được đề cập và cập nhật thư mục
Chúng tôi cũng có thể tạo một tệp mới tại một đường dẫn nhất định bằng cách sử dụng phương thức /home/rochdikhalid/dev/src/package/example.py04
In [*]: pathlib.PurePath('setup.py') Out[*]: PurePosixPath('setup.py') 9Logic tương tự áp dụng cho phương pháp /home/rochdikhalid/dev/src/package/example.py05. Ở đây, bạn có thể đặt In [*]: pathlib.PurePath('/src/goo/scripts/main.py').stem Out[*]: 'main' 9 thành In [*]: pathlib.PurePath('/src/goo/scripts/main.py').stem Out[*]: 'main' 2 để bỏ qua lỗi FileExists và cập nhật tệp
Đường dẫn(). rename() đổi tên tệp/thư mục theo một đường dẫn nhất định. Hãy lấy một ví dụ bằng cách sử dụng thư mục của chúng tôi In [*]: p = pathlib.PurePath('/src/goo/scripts/main.py') p.parents[0] Out[*]: PurePosixPath('/src/goo/scripts') In [*]: p.parents[1] Out[*]: PurePosixPath('/src/goo') 1
In [*]: pathlib.PurePosixPath('setup.py') Out[*]: PurePosixPath('setup.py') 0Nếu bạn chỉ định một tệp không tồn tại cho phương thức, nó sẽ gây ra lỗi FileNotFound. Điều tương tự cũng áp dụng cho các thư mục
Con đường(). read_text() trả về nội dung của tệp ở định dạng chuỗi
In [*]: pathlib.PurePosixPath('setup.py') Out[*]: PurePosixPath('setup.py') 1Ngoài ra, bạn có thể sử dụng phương thức /home/rochdikhalid/dev/src/package/example.py09 để ghi nội dung vào tệp
In [*]: pathlib.PurePosixPath('setup.py') Out[*]: PurePosixPath('setup.py') 2Lưu ý rằng phương thức /home/rochdikhalid/dev/src/package/example.py10 đã được thêm vào Python 3. 5 và đã được cập nhật gần đây trong Python 3. 10 để có một số tham số bổ sung
Lưu ý quan trọng
Bạn có thể tự hỏi tại sao bạn cần sử dụng đường dẫn hệ thống tệp Windows – bởi vì mọi gói phải tương thích với các hệ điều hành khác, không chỉ Windows
Bạn đúng nếu mục tiêu là tạo ra một đường dẫn bất khả tri về hệ điều hành. Tuy nhiên, đôi khi chúng tôi không thể thực hiện việc này do một số cài đặt dành riêng cho hệ thống Windows hoặc Posix. Đó là lý do tại sao những đối tượng đó có sẵn để giúp các nhà phát triển giải quyết các trường hợp sử dụng đó
Một số gói nhắm mục tiêu các sự cố chỉ xuất hiện trong hệ sinh thái Windows và Python cung cấp các trường hợp sử dụng đó trong thư viện này
Tiếp theo là gì?
Hy vọng, hướng dẫn này giúp bạn tìm hiểu cách thức và lý do sử dụng Pathlib cũng như cách nó hữu ích để xử lý và thao tác các đường dẫn hệ thống tệp
Sẽ thật tuyệt khi chơi với những gì bạn đã học và biến mọi thứ thành một dự án thực sự. Nếu bạn có bất kỳ câu hỏi nào, vui lòng kết nối và liên hệ với tôi bất cứ lúc nào trên LinkedIn
Ngoài ra, bạn có thể xem kênh của tôi trên YouTube nơi tôi chia sẻ video về những gì tôi đang học và xây dựng bằng mã
Hẹn gặp lại bạn trong hướng dẫn tiếp theo và tiếp tục tiến về phía trước
Người giới thiệu
Có rất nhiều điều để biết. Trong bài đăng trên blog này, tôi đã trình bày những điều cơ bản bạn cần để sử dụng Pathlib trong dự án của mình
Tài liệu chính thức nêu bật nhiều phương thức và thuộc tính hơn mà bạn có thể áp dụng cho đường dẫn hệ thống tệp của mình
- Pathlib - Đường dẫn hệ thống tệp hướng đối tượng
QUẢNG CÁO
QUẢNG CÁO
QUẢNG CÁO
QUẢNG CÁO
QUẢNG CÁO
QUẢNG CÁO
QUẢNG CÁO
QUẢNG CÁO
QUẢNG CÁO
QUẢNG CÁO
QUẢNG CÁO
QUẢNG CÁO
Mã hóa để tiếp cận không gian
Nếu bài viết này hữu ích, hãy tweet nó
Học cách viết mã miễn phí. Chương trình giảng dạy mã nguồn mở của freeCodeCamp đã giúp hơn 40.000 người có được việc làm với tư cách là nhà phát triển. Bắt đầu