Đọc tập tin mat python

Đọc tệp ghi trong Python hoặc trong bất kỳ ngôn ngữ nào khác là một thao tác thường xuyên được sử dụng trong quá trình làm việc. Bài viết này sẽ hướng dẫn bạn chi tiết cách đọc file trong Python và ghi file trong Python. Ngoài ra, mình cũng sẽ chia sẻ cách đọc cấu trúc từ điển ra file JSON

NỘI DUNG BÀI VIẾT

Đọc tệp ghi trong Python

Quá trình đọc tệp ghi trong Python trải qua 3 bước. Mở tệp, Đọc hoặc ghi tệp và cuối cùng là đóng tệp. Nhưng trước tiên, chúng ta sẽ xem xét các chế độ khi làm việc với tệp trong Python nhé

Chế độ truy cập tệp trong Python

Khá giống với các ngôn ngữ khác, việc đọc tệp ghi trong Python cũng có các chế độ làm việc tương ứng

Chế độGiải thíchChỉ đọc ('r')Chế độ mặc định khi mở tệp. Ở chế độ này, tệp được mở ở chế độ chỉ được phép đọc dữ liệu và con trỏ tệp bắt đầu ở vị trí tệp đầu. Nếu tệp không tồn tại, sẽ xảy ra lỗi FileNotFoundError ngoại lệ. Read & Write (‘r+’)Mở file cho phép cả đọc và ghi. Vị trí con trỏ tệp ở vị trí đầu của tệp. Nếu tệp không tồn tại, sẽ xảy ra lỗi FileNotFoundError ngoại lệ. Chỉ ghi (‘w’)Mở tệp và chỉ cho phép ghi. Vị trí con trỏ tệp ở vị trí đầu của tệp. Nếu tệp không tồn tại, sẽ tự động tạo tệp mới. Nếu tệp đã tồn tại, dữ liệu cũ sẽ bị ghi đè bằng dữ liệu mới. Write & Read (‘w+’)Mở tệp cho phép cả đọc và ghi. Vị trí con trỏ tệp ở vị trí đầu của tệp. Nếu tệp không tồn tại, sẽ tự động tạo tệp mới. Nếu tệp đã tồn tại, dữ liệu cũ sẽ bị ghi đè bằng dữ liệu mới. Append Only (‘a’)Mở tệp cho phép ghi. Tập tin sẽ được tạo mới nếu không tồn tại. Con trỏ tệp sẽ ở cuối tệp nên sẽ tiếp tục ghi dữ liệu vào cuối nếu dữ liệu ban đầu đã bị cấm. Append and Read (‘a+’)Mở tệp cho phép ghi và đọc. Tập tin sẽ được tạo mới nếu không tồn tại. Con trỏ tệp sẽ ở cuối tệp nên sẽ tiếp tục ghi dữ liệu vào cuối nếu dữ liệu ban đầu đã bị cấm

Mở tệp trong Python

Để mở tệp trong Python, chúng tôi không cần phải nhập thêm thư viện nào cả, chúng tôi sẽ sử dụng hàm open() tích hợp sẵn có cú pháp như sau

1

file_object = mở(r'đường_dẫn_tới_file', 'mode')

Lưu ý. Ký tự r trước đường dẫn đến tệp giúp bỏ qua các ký tự đặc biệt của chuỗi trong Python. Không có giới hạn, nếu không có ký tự r này thì \t trong đường dẫn D:\text\myfile.txt này sẽ được coi là tab đánh dấu, dẫn đến các sự cố không mong muốn

Ví dụ

1

2

3

4

5

6

7

8

9

10

# open file to read, mode = 'r'

rf = mở('data. txt', 'r')

# or

rf = mở('data. txt')

 

# open file to write

wf = mở('data. txt', 'w')

 

# open file to write to end

wf = mở('data. txt', 'a')

Đóng tệp trong Python

Sử dụng hàm close() để đóng đối tượng tệp khi bạn đã hoàn thành công việc với nó. Hãy luôn nhớ đóng tệp sau khi hoàn thành công việc nếu không muốn phát sinh các vấn đề không mong muốn

Ví dụ

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

# open file to read, mode = 'r'

rf = mở('data. txt', 'r')

# or

rf = mở('data. txt')

# đóng hồ sơ

rf. đóng()

 

# open file to write

wf = mở('data. txt', 'w')

# đóng hồ sơ

wf. đóng()

 

# open file to write to end

wf = mở('data. txt', 'a')

# đóng hồ sơ

wf. đóng()

Một cách linh hoạt hơn (nên sử dụng) khi làm việc với tệp mà không cần phải lo khi đóng tệp nào. Vui lòng sử dụng từ khóa with như sau

1

2

3

4

5

# Python will auto close file for you

với mở('/home/user/data. txt', 'r') as fp:

    # làm smt

 

# tiếp tục các khối lệnh khác

Đọc tệp trong Python

Python cung cấp cho bạn 3 cách khác nhau để đọc nội dung từ tập tin. Mình sẽ đi trực tiếp vào ví dụ để các bạn có thể hiểu & áp dụng được ngay

Đọc toàn bộ tập tin chuỗi

Sử dụng hàm read() để đọc toàn bộ tệp nội dung vào 1 biến chuỗi

1

2

3

4

5

với mở('dữ liệu. txt') như rf.

    nội dung = rf. đọc()

in(nội dung)

nội dung = nội dung + "\n\nTừ

in(nội dung)

Kết quả nhận được (cũng chính là tệp nội dung data.txt)

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

Cố định size

Can only known size during khai báo

Thay đổi kích thước trong quá trình thêm/ xóa phần tử

Kích thước tối đa phụ thuộc vào bộ nhớ

typedef was used todefine a data type in C

malloc là hàm phát bộ nhớ của C. Với C++ chúng ta sử dụng new

sizeof là hàm trả về kích thước của kiểu dữ liệu, sử dụng tham số cho hàm malloc

Cố định size

Can only known size during khai báo

Thay đổi kích thước trong quá trình thêm/ xóa phần tử

Kích thước tối đa phụ thuộc vào bộ nhớ

typedef was used todefine a data type in C

malloc là hàm phát bộ nhớ của C. Với C++ chúng ta sử dụng new

sizeof là hàm trả về kích thước của kiểu dữ liệu, sử dụng tham số cho hàm malloc

 

Từ LTKK với tình yêu

Đọc từng dòng của tệp

Sử dụng hàm readline() sẽ trả về 1 dòng nội dung của tệp. Chúng ta có thể duyệt qua từng dòng nội dung của tệp như sau

1

2

3

4

5

6

7

với mở('dữ liệu. txt') như rf.

    dòng = rf. đường đọc()

    chỉ mục = 1

    while dòng.

        in('Dòng {}. {}'. định dạng(chỉ mục, dòng))

        chỉ mục += 1

        dòng = rf. đường đọc()

Kết quả

1

2

3

4

5

6

7

8

9

10

11

12

13

Dòng 1. Cố định size

 

Dòng 2. Can only known size during khai báo

 

dòng 3. Thay đổi kích thước trong quá trình thêm/ xóa phần tử

 

dòng 4. Kích thước tối đa phụ thuộc vào bộ nhớ

 

dòng 5. typedef was used todefine a data type in C

 

dòng 6. malloc là hàm phát bộ nhớ của C. Với C++ chúng ta sử dụng new

 

dòng 7. sizeof là hàm trả về kích thước của kiểu dữ liệu, sử dụng tham số cho hàm malloc

Hàm readline() sẽ đọc 1 dòng, bao gồm cả ký tự dòng mới (‘\n’). Nên khi ra, mỗi dòng có thể có 1 dòng trống ở phía dưới như kết quả ở trên

Đọc toàn bộ tập tin ra danh sách

Vẫn là đọc toàn bộ tệp nhưng hàm r0 sẽ trả về một danh sách tương ứng với mỗi dòng dữ liệu là 1 phần tử của danh sách

1

2

3

4

với mở('dữ liệu. txt') như rf.

    dòng = rf. đường đọc()

    cho idx, dòng in enumerate(lines):

        in(idx, line)

Kết quả

1

2

3

4

5

6

7

8

9

10

11

12

13

0 Cố định kích thước

 

1 Can just known size during khai báo

 

2 Kích thước thay đổi trong quá trình thêm/ xóa phần tử

 

3 Kích thước tối đa phụ thuộc vào bộ nhớ

 

4 typedef được dùng để định nghĩa một kiểu dữ liệu trong C

 

5 malloc là hàm phát bộ nhớ của C. Với C++ chúng ta sử dụng new

 

6 sizeof là hàm trả về kích thước của kiểu dữ liệu, sử dụng tham số cho hàm malloc

Lưu ý. Bạn có thể sử dụng hàm r1 để xóa khoảng trắng thừa ở chuỗi đầu & cuối. Và các ký tự dòng mới ở cuối mỗi chuỗi cũng được coi là 1 khoảng trắng thừa

Ghi file trong Python

Để ghi tệp trong Python, chúng ta có thể sử dụng hàm r2 để ghi 1 chuỗi biến, hoặc sử dụng r3 để ghi 1 danh sách chuỗi chuỗi

1

2

3

4

5

6

7

8

9

10

11

12

văn bản = [

    "0 Kích thước cố định",

    "1 Can just known size in when khai báo",

    "2 Kích thước thay đổi trong quá trình bổ sung/ xóa phần tử",

    "3 Kích thước tối đa phụ thuộc vào bộ nhớ",

    "4 typedef được sử dụng để định nghĩa một kiểu dữ liệu trong C. ",

   "5 malloc là hàm cấp phát bộ nhớ của C. Với C++ chúng ta sử dụng new",

    "6 sizeof là hàm trả về kích thước của kiểu dữ liệu, sử dụng tham số cho hàm malloc"

]

với mở('dữ liệu. txt', 'w') as wf:

    đối với văn bản trong văn bản:

        wf. viết(văn bản + ')

hoặc

1

2

3

4

5

6

7

8

9

10

11

văn bản = [

    "0 Kích thước cố định",

    "1 Can just known size in when khai báo",

    "2 Kích thước thay đổi trong quá trình bổ sung/ xóa phần tử",

    "3 Kích thước tối đa phụ thuộc vào bộ nhớ",

    "4 typedef được sử dụng để định nghĩa một kiểu dữ liệu trong C. ",

   "5 malloc là hàm cấp phát bộ nhớ của C. Với C++ chúng ta sử dụng new",

    "6 sizeof là hàm trả về kích thước của kiểu dữ liệu, sử dụng tham số cho hàm malloc"

]

với mở('dữ liệu. txt', 'w') as wf:

    wf. dòng viết(văn bản)

Lưu ý

Hàm r4 không tự động chèn thêm r5 vào cuối mỗi dòng. If if run code on, the lines will write together to 1 lines duy nhất


1

0 Kích thước cố định1 Cần chỉ định kích thước khi khai báo2 Kích thước thay đổi trong quá trình thêm/xóa phần tử3 Kích thước tối đa phụ thuộc vào bộ nhớ4 typedef được sử dụng để định nghĩa một kiểu dữ liệu trong C. 5 malloc là hàm phát bộ nhớ của C. Với C++ chúng ta sử dụng new6 sizeof là hàm trả về kích thước của kiểu dữ liệu, sử dụng tham số cho hàm malloc

Ghi dữ liệu vào cuối tập tin

Chúng ta chỉ cần thay đổi chế độ từ r6 sang r7 là được. Xem ví dụ

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

văn bản = [

    "0 Kích thước cố định",

    "1 Can just known size in when khai báo",

    "2 Kích thước thay đổi trong quá trình bổ sung/ xóa phần tử",

    "3 Kích thước tối đa phụ thuộc vào bộ nhớ",

    "4 typedef được sử dụng để định nghĩa một kiểu dữ liệu trong C. ",

   "5 malloc là hàm cấp phát bộ nhớ của C. Với C++ chúng ta sử dụng new",

    "6 sizeof là hàm trả về kích thước của kiểu dữ liệu, sử dụng tham số cho hàm malloc"

]

với mở('dữ liệu. txt', 'w') as wf:

    đối với văn bản trong văn bản:

        wf. viết(văn bản + ')

 

với mở('dữ liệu. txt') như wr.

    in("Số dòng. ", len(wr. đường đọc()))

 

# Ghi tập tin vào cuối

với mở('dữ liệu. txt', 'a') as wf:

    wf. viết('=> Từ LTKK với tình yêu')

 

với mở('dữ liệu. txt') như wr.

    văn bản = wr. đường đọc()

    in("Số dòng. ", len(văn bản))

    in(văn bản)

Kết quả

1

2

3

Số dòng. 7

Số dòng. số 8

['0 Kích thước cố định\n', '1 Cần chỉ định kích thước khi khai báo\n', '2 Kích thước thay đổi trong quá trình thêm/ xóa phần tử\n', '3 Kích thước tối đa . \n', '5 malloc là hàm cấp phát bộ nhớ của C. Với C++ chúng ta sử dụng new\n', '6 sizeof là hàm trả về kích thước của kiểu dữ liệu, sử dụng tham số cho hàm malloc\n', '=> From LTKK with love']

[sc_]

Đọc ghi JSON từ tệp

Trong phần này, chúng ta sẽ làm việc với tệp JSON sử dụng ngôn ngữ Python. Giả sử chúng ta có tệp JSON như sau

Đọc tập tin mat python
Đọc tập tin mat python

Cách đọc tệp JSON

1

2

3

4

5

6

nhập json

 

với mở('khách hàng. json') as wr.

    khách hàng = json. tải(wr)

    dành cho khách hàng trong khách hàng:

        in(khách hàng, type(customer))

Kết quả

1

2

{'id': 1, 'email': '[email protected]', 'first': 'Torrey', 'last': 'Veum', 'company': 'Hilll, Mayert and Wolf', 'created_at': '2014-12-25T04:06:27.981Z', 'country': 'Switzerland'}

{'id': 2, 'email': '[email protected]', 'first': 'Micah', 'last': 'Sanford', 'company': 'Stokes-Reichel', 'created_at': '2014-07-03T16:08:17.044Z', 'country': "Democratic People's Republic of Korea"}

Ghi từ điển dữ liệu ra tệp JSON

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

nhập json

 

khách hàng = [

    {

        "id". 1,

        "email". "[email được bảo vệ]",

        "đầu tiên". "Torrey",

        "cuối cùng". "Veum",

        "công ty". "Hilll, Mayert và Wolf",

        "created_at". "2014-12-25T04. 06. 27. 981Z",

        "quốc gia". "Thụy Sĩ"

    },

    {

        "id". 2,

        "email". "[email được bảo vệ]",

        "đầu tiên". "Mi-ca",

        "cuối cùng". "Sanford",

        "công ty". "Stokes-Reichel",

        "created_at". "2014-07-03T16. 08. 17. 044Z",

        "quốc gia". "Cộng hòa Dân chủ Nhân dân Triều Tiên"

    }

]

 

với mở('khách hàng. json', 'w') as wr:

    json. kết xuất(khách hàng, wr)

Lưu ý

  • Với dữ liệu tiếng Việt, hàm r8 và r9 sẽ đưa toàn bộ về bảng mã ASCII. Làm điều đó, nếu bạn muốn đọc được tệp JSON khi mở bằng Trình chỉnh sửa, thêm tùy chọn \t0
  • Nếu muốn làm đẹp file JSON thì hãy thêm option \t1 vào hàm r8 nhé. Trong đó, 2 số lượng dấu cách (dấu cách) được sử dụng để định dạng tệp tin

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

nhập json

 

khách hàng = [

    {

        "id". 1,

        "email". "[email được bảo vệ]",

        "đầu tiên". "Hiếu",

        "cuối cùng". "Nguyễn Văn",

        "công ty". "Zalo",

        "created_at". "2014-12-25T04. 06. 27. 981Z",

        "quốc gia". "Việt Nam"

    },

    {

        "id". 2,

        "email". "[email được bảo vệ]",

        "đầu tiên". "Mi-ca",

        "cuối cùng". "Sanford",

        "công ty". "Stokes-Reichel",

        "created_at". "2014-07-03T16. 08. 17. 044Z",

        "quốc gia". "Cộng hòa Dân chủ Nhân dân Triều Tiên"

    }

]

 

với mở('khách hàng. json', 'w') as wr:

    json. kết xuất(khách hàng, wr, ensure_ascii=False, indent=2)

Kết quả

Đọc tập tin mat python
Đọc tập tin mat python

 

Như vậy, bài viết đã trình bày các nội dung cần thiết để bạn đọc về nội dung đọc tệp ghi trong Python. Với những kiến ​​thức căn bản này, bạn hoàn toàn có thể sử dụng câu trả lời yêu cầu trong công việc rồi đấy. Chúc các bạn học tập tốt

Tham gia nhóm Lập Trình Không Khó nhé. https. //www. Facebook. com/groups/1023125804557712/

  • THẺ
  • đọc ghi tập tin
  • key learning python
  • set python program
  • con trăn

Facebook

Twitter

Pinterest

WhatsApp

Nguyễn Văn Hiếu

Sáng lập cộng đồng Lập Trình Không Khó với mong muốn giúp đỡ các bạn trẻ trên con đường trở thành những lập trình viên tương lai. Tất cả những gì tôi viết ra đây chỉ đơn giản là cơ sở thích ghi lại các kiến ​​thức mà tôi tích lũy được