Python đọc tệp với pathlib

hệ điều hành. mô-đun đường dẫn cũng có thể được sử dụng để xử lý các hoạt động tên đường dẫn. Sự khác biệt là mô-đun đường dẫn tạo các chuỗi đại diện cho đường dẫn tệp trong khi pathlib tạo đối tượng đường dẫn

Một lợi thế quan trọng của việc sử dụng các đối tượng đường dẫn thay vì một chuỗi là chúng ta có thể gọi các phương thức trên một đối tượng đường dẫn. Mô-đun Pathlib cung cấp nhiều phương thức hữu ích như chúng ta sẽ thấy trong các ví dụ

Trong bài viết này, chúng ta sẽ xem qua 10 ví dụ để nắm vững cách sử dụng mô-đun pathlib

1. Tạo một đối tượng đường dẫn

Hãy bắt đầu với việc nhập pathlib và tạo một đối tượng đường dẫn

import pathlib
pathlib.Path[]
PosixPath['.'] #relative path to the current folder

Nếu chúng ta gọi phương thức Đường dẫn mà không có đối số, nó sẽ tạo một đường dẫn tương đối đến thư mục mà chúng ta hiện đang làm việc. Các đường dẫn có thể được mô tả là tương đối hoặc tuyệt đối

  • Đường dẫn tương đối. Đường dẫn liên quan đến thư mục chúng tôi hiện đang làm việc
  • đường dẫn tuyệt đối. Đường dẫn liên quan đến hệ điều hành

Để làm cho sự khác biệt rõ ràng hơn, tôi cũng sẽ tạo đường dẫn tuyệt đối đến thư mục mà tôi hiện đang làm việc.

PosixPath['.'] #relative pathPosixPath['/home/soner/Desktop/data'] #absolute path

2. Tạo đường dẫn bằng cách chuyển thư mục và tên tệp

Chúng ta có thể gọi phương thức đường dẫn bằng cách chuyển tên thư mục và tệp dưới dạng các chuỗi riêng biệt. Tôi hiện đang chạy các ví dụ trên sổ ghi chép jupyter được lưu trong thư mục có tên là “dữ liệu”. Có một thư mục “tên” trong thư mục “dữ liệu” và bên trong “tên”, tôi có một tệp có tên là “file1. json”

Tôi sẽ tạo một đối tượng đường dẫn đại diện cho đường dẫn tương đối tới tệp này

p = pathlib.Path["names", "file1.json"]p
PosixPath['names/file1.json']

3. Chuyển đổi đường dẫn tương đối thành đường dẫn tuyệt đối

Trong một số trường hợp, chúng ta có thể cần sử dụng đường dẫn tuyệt đối thay vì đường dẫn tương đối. Phương thức giải quyết được sử dụng để chuyển đổi một đường dẫn tương đối thành một đường dẫn tuyệt đối

Chúng ta có thể gọi nó trên đối tượng đường dẫn mà chúng ta đã tạo trước đó

p.resolve[]
PosixPath['/home/soner/Desktop/data/names/file1.json']

Đường dẫn trả về là đường dẫn tuyệt đối của file1. Một cách khác để chuyển đổi đường dẫn tương đối thành đường dẫn tuyệt đối là thông qua phương thức tuyệt đối

p.absolute[]
PosixPath['/home/soner/Desktop/data/names/file1.json']

4. Đọc văn bản bằng đường dẫn

Mô-đun pathlib có một phương thức có thể được sử dụng để đọc văn bản bên trong tệp

p.read_text[]
'{\n "John": 1,\n "Jane": 2\n}'

Chúng ta có thể xem nội dung của file1. json nhưng định dạng không đẹp và sạch sẽ. Mô-đun json có thể được sử dụng cùng với pathlib để cải thiện mọi thứ

import jsonjson.loads[p.read_text[]]
{'John': 1, 'Jane': 2}

5. Đường dẫn tương đối đến đường dẫn khác

Chúng ta có thể tạo một đường dẫn có liên quan đến một đường dẫn khác

p1 = pathlib.Path["names", "file1.json"]p2 = pathlib.Path["names"]p_relative = p1.relative_to[p2]p_relative
PosixPath['file1.json']

p_relative là đường dẫn tương đối của p2 [thư mục tên] đến p1 [tệp1 bên trong thư mục tên]. Nó cũng có thể được coi là một đường dẫn tuyệt đối dựa trên một đường dẫn khác [không phải hệ điều hành]

6. So sánh hai con đường

Chúng ta có thể sử dụng phương thức samefile để so sánh nếu hai đường dẫn đại diện cho cùng một tệp. Các đường dẫn có thể là tương đối hoặc tuyệt đối

Hãy xem xét hai con đường sau đây

________số 8

p2 là phiên bản đường dẫn tuyệt đối của p1. Hãy so sánh chúng bằng phương thức samefile

p1.samefile[p2]
True

7. Tệp hoặc thư mục

Chúng tôi có thể kiểm tra xem một đường dẫn đại diện cho một tệp hoặc một thư mục. Các phương thức, không có gì đáng ngạc nhiên, is_file và is_dir

PosixPath['.'] #relative pathPosixPath['/home/soner/Desktop/data'] #absolute path
0

Đường dẫn p1 đại diện cho tệp json nên is_file trả về True

8. Di chuyển tệp bằng pathlib

Mô-đun pathlib cũng có thể được sử dụng để di chuyển tệp

tôi có tập tin1. json lưu trữ trong thư mục dữ liệu

PosixPath['.'] #relative pathPosixPath['/home/soner/Desktop/data'] #absolute path
1

Tôi muốn chuyển file1 vào thư mục id và đổi tên thành file1-a. Phương pháp đổi tên được sử dụng như sau

PosixPath['.'] #relative pathPosixPath['/home/soner/Desktop/data'] #absolute path
2

File1 không tồn tại trong thư mục dữ liệu nữa. Chúng ta có thể kiểm tra nó bằng phương thức tồn tại

PosixPath['.'] #relative pathPosixPath['/home/soner/Desktop/data'] #absolute path
3

9. Tạo một đường dẫn mới và viết văn bản

Mô-đun pathlib cung cấp một cách để tạo một tệp mới và viết văn bản vào đó

Hãy tạo một văn bản để ghi vào đối tượng đường dẫn

PosixPath['.'] #relative pathPosixPath['/home/soner/Desktop/data'] #absolute path
4

Bây giờ chúng ta có thể tạo một đường dẫn và gọi phương thức write_text trên đó

PosixPath['.'] #relative pathPosixPath['/home/soner/Desktop/data'] #absolute path
5

Phương thức kết xuất của mô-đun json chuyển đổi nội dung của tệp json thành văn bản. Chúng tôi chuyển văn bản này tới phương thức write_text và nó được viết trong tệp mới. json

Chúng tôi có thể xác nhận nó bằng cách đọc nội dung của tệp mới. json

PosixPath['.'] #relative pathPosixPath['/home/soner/Desktop/data'] #absolute path
6

10. Cha mẹ và cha mẹ

Cấu trúc thư mục được phân cấp nên thư mục mẹ cao hơn một cấp. Chúng ta có thể gọi phương thức cha mẹ hoặc cha mẹ trên đường dẫn

Phương thức cha sẽ trả về đường dẫn đại diện cho một cấp trên

PosixPath['.'] #relative pathPosixPath['/home/soner/Desktop/data'] #absolute path
7

Cha mẹ trả về một chuỗi tất cả các thư mục mẹ

PosixPath['.'] #relative pathPosixPath['/home/soner/Desktop/data'] #absolute path
8

Sự kết luận

Mô-đun pathlib cung cấp các cách thuận tiện và mạnh mẽ để xử lý đường dẫn tệp. Pathlib tạo các đường dẫn dưới dạng các đối tượng để nó được ưu tiên hơn os. mô-đun đường dẫn. hệ điều hành. đường dẫn tạo đường dẫn dưới dạng chuỗi

Chúng tôi đã đề cập đến các phương pháp được sử dụng phổ biến nhất của pathlib. Tuy nhiên, có nhiều hơn thế. Nếu bạn muốn đọc thêm, bạn luôn có thể truy cập tài liệu chính thức

Pathlib có tốt hơn os không?

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.

Python có đi kèm với Pathlib không?

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.

Đường dẫn cwd[] là gì?

Trong Pathlib, Đường dẫn. Hàm cwd[] được dùng để lấy thư mục làm việc hiện tại và toán tử / được dùng thay cho os. đường dẫn. tham gia để kết hợp các phần của đường dẫn thành một đối tượng đường dẫn phức hợp. Mẫu lồng chức năng trong hệ điều hành.

__ tệp __ trong Python là gì?

__file__ là biến chứa đường dẫn đến mô-đun hiện đang được nhập . Python tạo một biến __file__ cho chính nó khi nó chuẩn bị nhập một mô-đun.

Chủ Đề