Trong loạt bài hướng dẫn Python cho người mới bắt đầu, chúng ta đã tìm hiểu thêm về Hàm chuỗi Python trong bài hướng dẫn trước
Python cung cấp cho chúng ta một tính năng quan trọng là đọc dữ liệu từ tệp và ghi dữ liệu vào tệp
Hầu hết, trong các ngôn ngữ lập trình, tất cả các giá trị hoặc dữ liệu được lưu trữ trong một số biến có tính chất dễ bay hơi
Bởi vì dữ liệu sẽ được lưu trữ vào các biến đó chỉ trong thời gian chạy và sẽ bị mất khi quá trình thực thi chương trình hoàn tất. Do đó, tốt hơn là lưu những dữ liệu này vĩnh viễn bằng các tệp
Bạn sẽ học được gì
Python xử lý tệp như thế nào?
Nếu bạn đang làm việc trong một ứng dụng phần mềm lớn, nơi chúng xử lý một lượng lớn dữ liệu, thì chúng ta không thể mong đợi những dữ liệu đó được lưu trữ trong một biến vì bản chất các biến là không ổn định
Do đó, khi bạn chuẩn bị xử lý các tình huống như vậy, vai trò của các tệp sẽ xuất hiện
Vì bản chất các tệp không dễ bay hơi, dữ liệu sẽ được lưu trữ vĩnh viễn trong một thiết bị thứ cấp như Đĩa cứng và sử dụng python, chúng tôi sẽ xử lý các tệp này trong các ứng dụng của mình
Bạn đang nghĩ về cách python sẽ xử lý các tệp?
Hãy lấy một Ví dụ về cách người bình thường sẽ xử lý tệp. Nếu muốn đọc dữ liệu từ tệp hoặc ghi dữ liệu vào tệp thì trước hết ta mở tệp hoặc tạo tệp mới nếu tệp chưa tồn tại rồi thực hiện các thao tác đọc/ghi thông thường. .
Tương tự, chúng tôi thực hiện các thao tác tương tự trong python bằng một số phương thức hoặc hàm dựng sẵn
Các loại tệp trong Python
Có hai loại tệp trong Python và mỗi loại được giải thích chi tiết bên dưới với các ví dụ để bạn dễ hiểu
họ đang
- Tập tin nhị phân
- tệp văn bản
Tệp nhị phân trong Python
Hầu hết các tệp mà chúng tôi thấy trong hệ thống máy tính của mình được gọi là tệp nhị phân
Thí dụ
- tập tin tài liệu. . pdf,. tài liệu,. xls, v.v.
- tập tin hình ảnh. . png,. jpg,. ảnh gif,. bmp, v.v.
- Tập video. . mp4,. 3gp,. mkv,. avi, v.v.
- Tập tin âm thanh. . mp3,. sóng,. tôi,. aac, v.v.
- tệp cơ sở dữ liệu. . mdb,. gia nhập,. từ,. sqlite, v.v.
- tập tin lưu trữ. . khóa kéo,. rar,. iso,. 7z, v.v.
- Các tập tin thực thi. . exe,. dll,. lớp vv
Nên đọc =>> Cách mở. Tệp 7z
Tất cả các tệp nhị phân tuân theo một định dạng cụ thể. Chúng tôi có thể mở một số tệp nhị phân trong trình soạn thảo văn bản thông thường nhưng chúng tôi không thể đọc nội dung có trong tệp. Đó là bởi vì tất cả các tệp nhị phân sẽ được mã hóa ở định dạng nhị phân, chỉ có máy tính hoặc máy mới có thể hiểu được
Để xử lý các tệp nhị phân như vậy, chúng tôi cần một loại phần mềm cụ thể để mở nó
Ví dụ: Bạn cần có phần mềm Microsoft word để mở. tập tin nhị phân doc. Tương tự như vậy, bạn cần một phần mềm đọc pdf để mở. pdf và bạn cần một phần mềm chỉnh sửa ảnh để đọc các tệp hình ảnh, v.v.
Tệp văn bản trong Python
Các tệp văn bản không có bất kỳ mã hóa cụ thể nào và nó có thể được mở trong chính trình soạn thảo văn bản thông thường
Thí dụ
- tiêu chuẩn web. html, XML, CSS, JSON, v.v.
- Mã nguồn. c, ứng dụng, js, py, java, v.v.
- Các tài liệu. txt, tex, RTF, v.v.
- Dữ liệu dạng bảng. csv, tsv, v.v.
- Cấu hình. ini, cfg, reg, v.v.
Trong hướng dẫn này, chúng ta sẽ xem cách xử lý cả tệp văn bản cũng như tệp nhị phân với một số ví dụ cổ điển
Thao tác xử lý tệp Python
Quan trọng nhất là có 4 loại thao tác mà Python có thể xử lý trên tệp
- Mở ra
- Đọc
- Viết
- Đóng
Các hoạt động khác bao gồm
- Đổi tên
- Xóa bỏ
Python Tạo và Mở Tệp
Python có một hàm dựng sẵn gọi là open[] để mở tệp
Phải mất tối thiểu một đối số như được đề cập trong cú pháp dưới đây. Phương thức mở trả về một đối tượng tệp được sử dụng để truy cập ghi, đọc và các phương thức dựng sẵn khác
cú pháp
file_object = open[file_name, mode]
Ở đây, file_name là tên của tệp hoặc vị trí của tệp mà bạn muốn mở và tệp_name cũng phải có phần mở rộng tệp. Có nghĩa là trong thử nghiệm. txt – thuật ngữ test là tên của tệp và. txt là phần mở rộng của tập tin
Chế độ trong cú pháp hàm mở sẽ cho Python biết bạn muốn thực hiện thao tác nào trên một tệp
- 'r' - Chế độ đọc. Chế độ đọc chỉ được sử dụng để đọc dữ liệu từ tệp
- 'w' - Chế độ ghi. Chế độ này được sử dụng khi bạn muốn ghi dữ liệu vào tệp hoặc sửa đổi nó. Chế độ ghi nhớ ghi đè lên dữ liệu có trong tệp
- 'a' - Chế độ chắp thêm. Chế độ nối thêm được sử dụng để nối thêm dữ liệu vào tệp. Dữ liệu ghi nhớ sẽ được thêm vào cuối con trỏ tệp
- ‘r+’ – Chế độ đọc hoặc ghi. Chế độ này được sử dụng khi chúng ta muốn ghi hoặc đọc dữ liệu từ cùng một tệp
- 'a+' – Chế độ thêm hoặc đọc. Chế độ này được sử dụng khi chúng ta muốn đọc dữ liệu từ tệp hoặc nối thêm dữ liệu vào cùng một tệp
Ghi chú. Các chế độ nêu trên chỉ dùng để mở, đọc hoặc ghi tệp văn bản.
Trong khi sử dụng tệp nhị phân, chúng ta phải sử dụng các chế độ tương tự có chữ 'b' ở cuối. Để Python có thể hiểu rằng chúng ta đang tương tác với các tệp nhị phân
- ‘wb’ – Mở tệp ở chế độ chỉ ghi ở định dạng nhị phân
- 'rb' - Mở tệp cho chế độ chỉ đọc ở định dạng nhị phân
- 'ab' - Mở tệp cho chế độ chỉ nối thêm ở định dạng nhị phân
- ‘rb+’ – Mở tệp ở chế độ chỉ đọc và ghi ở định dạng nhị phân
- 'ab+' - Mở tệp để nối thêm và chế độ chỉ đọc ở định dạng nhị phân
ví dụ 1
fo = open[“C:/Documents/Python/test.txt”, “r+”]
Trong ví dụ trên, chúng tôi đang mở tệp có tên 'test. txt’ hiện tại vị trí ‘C. /Documents/Python/’ và chúng tôi đang mở cùng một tệp ở chế độ đọc-ghi giúp chúng tôi linh hoạt hơn
ví dụ 2
fo = open[“C:/Documents/Python/img.bmp”, “rb+”]
Trong ví dụ trên, chúng tôi đang mở tệp có tên 'img. bmp’ có mặt tại vị trí “C. /Documents/Python/”, Nhưng, ở đây chúng tôi đang cố mở tệp nhị phân
Python đọc từ tệp
Để đọc một tệp trong python, chúng ta phải mở tệp ở chế độ đọc
Có ba cách để chúng ta có thể đọc các tệp trong python
- đã đọc[[n]]
- dòng đọc[[n]]
- đường đọc []
Ở đây, n là số byte được đọc
Đầu tiên chúng ta tạo một file văn bản mẫu như hình bên dưới
Bây giờ hãy quan sát xem mỗi phương thức đọc làm gì
ví dụ 1
my_file = open[“C:/Documents/Python/test.txt”, “r”] print[my_file.read[5]]
đầu ra
Xin chào
Ở đây chúng ta đang mở file test. txt ở chế độ chỉ đọc và chỉ đọc 5 ký tự đầu tiên của tệp bằng my_file. đọc [5] phương pháp
đầu ra
ví dụ 2
my_file = open[“C:/Documents/Python/test.txt”, “r”] print[my_file.read[]]
đầu ra
Chào thế giới
Xin chào con trăn
Buổi sáng tốt lành
Ở đây chúng tôi chưa cung cấp bất kỳ đối số nào bên trong hàm read[]. Do đó, nó sẽ đọc tất cả nội dung có trong tệp
đầu ra
ví dụ 3
my_file = open[“C:/Documents/Python/test.txt”, “r”] print[my_file.readline[2]]
đầu ra
Anh ta
Hàm này trả về 2 ký tự đầu tiên của dòng tiếp theo
đầu ra
Ví dụ 4
my_file = open[“C:/Documents/Python/test.txt”, “r”] print[my_file.readline[]]
đầu ra
Chào thế giới
Sử dụng chức năng này, chúng ta có thể đọc nội dung của tệp trên cơ sở từng dòng
đầu ra
Ví dụ 5
my_file = open[“C:/Documents/Python/test.txt”, “r”] print[my_file.readlines[]]
đầu ra
[‘Xin chào thế giới\n’, ‘Xin chào Python\n’, ‘Chào buổi sáng’]
Ở đây chúng tôi đang đọc tất cả các dòng có trong tệp văn bản bao gồm các ký tự dòng mới
đầu ra
Bây giờ hãy xem một số ví dụ thực tế hơn về việc đọc tệp
Đọc một dòng cụ thể từ một Tệp
________số 8_______đầu ra
Bạn khỏe không
Trong ví dụ trên, chúng tôi đang cố gắng chỉ đọc dòng thứ 4 từ 'test'. txt' bằng cách sử dụng "vòng lặp for"
đầu ra
Đọc toàn bộ tập tin cùng một lúc
filename = “C:/Documents/Python/test.txt” filehandle = open[filename, ‘r’] filedata = filehandle.read[] print[filedata]
đầu ra
Chào thế giới
Xin chào con trăn
Buổi sáng tốt lành
Bạn khỏe không
đầu ra
Python ghi vào tệp
Để ghi dữ liệu vào tệp ta phải mở tệp ở chế độ ghi
Chúng ta cần hết sức cẩn thận khi ghi dữ liệu vào tệp vì nó sẽ ghi đè lên nội dung có trong tệp mà bạn đang ghi và tất cả dữ liệu trước đó sẽ bị xóa
Chúng tôi có hai phương pháp để ghi dữ liệu vào một tệp như hình dưới đây
- viết [chuỗi]
- dòng viết [danh sách]
ví dụ 1
fo = open[“C:/Documents/Python/test.txt”, “r+”]0
Đoạn mã trên viết Chuỗi 'Xin chào thế giới' vào 'bài kiểm tra'. tập tin txt
Trước khi ghi dữ liệu vào test. tập tin txt
đầu ra
ví dụ 2
fo = open[“C:/Documents/Python/test.txt”, “r+”]1
Dòng đầu tiên sẽ là 'Xin chào thế giới' và như chúng tôi đã đề cập đến ký tự \n, con trỏ sẽ di chuyển đến dòng tiếp theo của tệp và sau đó viết 'Xin chào Python'
Hãy nhớ rằng nếu chúng ta không đề cập đến ký tự \n thì dữ liệu sẽ được ghi liên tục vào tệp văn bản như 'Xin chào WorldHelloPython'
đầu ra
ví dụ 3
fo = open[“C:/Documents/Python/test.txt”, “r+”]2
Đoạn mã trên viết một danh sách dữ liệu vào 'kiểm tra. txt’ đồng thời
đầu ra
Python nối vào tệp
Để nối thêm dữ liệu vào một tệp, chúng tôi phải mở tệp ở chế độ 'a+' để chúng tôi có quyền truy cập vào cả hai chế độ nối thêm cũng như ghi
ví dụ 1
fo = open[“C:/Documents/Python/test.txt”, “r+”]3
Đoạn mã trên nối thêm chuỗi 'Apple' vào cuối 'kiểm tra. tập tin txt
đầu ra
ví dụ 2
fo = open[“C:/Documents/Python/test.txt”, “r+”]4
Đoạn mã trên nối thêm chuỗi 'Apple' vào cuối 'kiểm tra. txt’ trong một dòng mới
đầu ra
ví dụ 3
fo = open[“C:/Documents/Python/test.txt”, “r+”]5
Đoạn mã trên nối thêm một danh sách dữ liệu vào một 'kiểm tra. tập tin txt
đầu ra
Ví dụ 4
fo = open[“C:/Documents/Python/test.txt”, “r+”]6
Trong đoạn mã trên, chúng tôi đang thêm danh sách dữ liệu vào 'kiểm tra. tập tin txt. Ở đây, bạn có thể quan sát thấy rằng chúng tôi đã sử dụng phương thức tell[] để in vị trí hiện tại của con trỏ
tìm kiếm [bù đắp]. Phần bù có ba loại đối số là 0,1 và 2
Khi offset bằng 0. Tham chiếu sẽ được trỏ vào đầu tệp
Khi độ lệch là 1. Tham chiếu sẽ được chỉ vào vị trí con trỏ hiện tại
Khi độ lệch là 2. Tài liệu tham khảo sẽ được chỉ vào cuối tập tin
đầu ra
Python Đóng tệp
Để đóng một tệp, trước hết ta phải mở tệp. Trong python, chúng ta có một phương thức gọi là close[] để đóng tệp được mở
Bất cứ khi nào bạn mở một tệp, điều quan trọng là phải đóng tệp đó, đặc biệt là với phương thức ghi. Bởi vì nếu chúng ta không gọi hàm đóng sau phương thức ghi thì bất kỳ dữ liệu nào chúng ta đã ghi vào tệp sẽ không được lưu vào tệp
ví dụ 1
fo = open[“C:/Documents/Python/test.txt”, “r+”]7
ví dụ 2
fo = open[“C:/Documents/Python/test.txt”, “r+”]8
Python đổi tên hoặc xóa tệp
Python cung cấp cho chúng ta mô-đun “os” có một số phương thức dựng sẵn giúp chúng ta thực hiện các thao tác với tệp như đổi tên và xóa tệp
Để sử dụng mô-đun này, trước hết, chúng ta cần nhập mô-đun “os” vào chương trình của mình và sau đó gọi các phương thức liên quan
phương thức đổi tên []
Phương thức rename[] này chấp nhận hai đối số i. e. tên tệp hiện tại và tên tệp mới
cú pháp
fo = open[“C:/Documents/Python/test.txt”, “r+”]9
ví dụ 1
fo = open[“C:/Documents/Python/img.bmp”, “rb+”]0
Đây ‘kiểm tra. txt' là tên tệp hiện tại và 'test1. txt' là tên tệp mới
Bạn có thể chỉ định vị trí cũng như được hiển thị trong ví dụ bên dưới
ví dụ 2
fo = open[“C:/Documents/Python/img.bmp”, “rb+”]1
Trước khi đổi tên tệp
Sau khi thực hiện chương trình trên
loại bỏ[] phương pháp
Chúng tôi sử dụng phương thức remove[] để xóa tệp bằng cách cung cấp tên tệp hoặc vị trí tệp mà bạn muốn xóa
cú pháp
fo = open[“C:/Documents/Python/img.bmp”, “rb+”]2
ví dụ 1
fo = open[“C:/Documents/Python/img.bmp”, “rb+”]3
Đây ‘kiểm tra. txt’ là tệp bạn muốn xóa
Tương tự, chúng ta cũng có thể chuyển vị trí tệp cho các đối số như trong ví dụ bên dưới
ví dụ 2
fo = open[“C:/Documents/Python/img.bmp”, “rb+”]4
Mã hóa trong tệp
Mã hóa tệp đại diện cho việc chuyển đổi các ký tự thành một định dạng cụ thể mà chỉ máy mới có thể hiểu được
Các máy khác nhau có định dạng mã hóa khác nhau như hình bên dưới
- Hệ điều hành Microsoft Windows sử dụng định dạng mã hóa 'cp1252' theo mặc định
- Hệ điều hành Linux hoặc Unix sử dụng định dạng mã hóa 'utf-8' theo mặc định
- Hệ điều hành MAC của Apple sử dụng định dạng mã hóa 'utf-8' hoặc 'utf-16' theo mặc định
Hãy xem hoạt động mã hóa với một số ví dụ
ví dụ 1
fo = open[“C:/Documents/Python/img.bmp”, “rb+”]5
đầu ra
Định dạng mã hóa Microsoft Windows theo mặc định là cp1252
Ở đây, tôi đã thực hiện chương trình của mình trên máy windows, vì vậy nó đã in bảng mã mặc định là ‘cp1252’
đầu ra
Chúng ta cũng có thể thay đổi định dạng mã hóa của tệp bằng cách chuyển nó làm đối số cho hàm open
ví dụ 2
fo = open[“C:/Documents/Python/img.bmp”, “rb+”]6
đầu ra
Định dạng mã hóa tệp là. cp437
đầu ra
ví dụ 3
fo = open[“C:/Documents/Python/img.bmp”, “rb+”]7
đầu ra
Định dạng mã hóa tệp là. utf-16
đầu ra
Viết và đọc dữ liệu từ tệp nhị phân
Các tệp nhị phân lưu trữ dữ liệu ở định dạng nhị phân [0 và 1] mà máy có thể hiểu được. Vì vậy, khi chúng tôi mở tệp nhị phân trong máy của mình, nó sẽ giải mã dữ liệu và hiển thị ở định dạng mà con người có thể đọc được
Thí dụ
# Hãy tạo một số tệp nhị phân
fo = open[“C:/Documents/Python/img.bmp”, “rb+”]8
Trong ví dụ trên, đầu tiên chúng ta tạo một tệp nhị phân 'bfile. bin’ với quyền truy cập đọc và ghi và bất kỳ dữ liệu nào bạn muốn nhập vào tệp phải được mã hóa trước khi bạn gọi phương thức ghi
Ngoài ra, chúng tôi đang in dữ liệu mà không giải mã nó, để chúng tôi có thể quan sát dữ liệu trông chính xác như thế nào bên trong tệp khi nó được mã hóa và chúng tôi cũng đang in cùng một dữ liệu bằng cách giải mã dữ liệu đó để con người có thể đọc được
đầu ra
Dữ liệu nhị phân. b'Xin chào Python'
dữ liệu bình thường. Xin chào con trăn
đầu ra
Thuộc tính tệp I/O
AttributeDescriptionNameTrả về tên của fileModeTrả về chế độ của fileEncodingTrả về định dạng mã hóa của fileClosedTrả về true nếu file đóng ngược lại trả về false
Thí dụ
fo = open[“C:/Documents/Python/img.bmp”, “rb+”]9
đầu ra
Tên tập tin là gì? . /Documents/Python/test. txt
Chế độ tập tin là gì?
Định dạng mã hóa là gì?
Tệp có bị đóng không?
Tệp có bị đóng không?
đầu ra
Hãy thử một vài phương pháp khác của tệp
Thí dụ
my_file = open[“C:/Documents/Python/test.txt”, “r”] print[my_file.read[5]]0
đầu ra
Xin chào con trăn
Chào thế giới
Buổi sáng tốt lành
Tệp có thể đọc được không. ?
Tập tin có ghi được không. ?
Thư mục số. 3
đầu ra
Phương thức tệp Python
FunctionExplanationopen[] Để mở một tệpđóng[]Đóng một tệp đang mởfileno[]Trả về một số nguyên của tệp đã đọc[n]Đọc 'n' ký tự từ tệp cho đến hết tệp có thể đọc được[]Trả về true nếu tệp có thể đọc đượcdòng đọc[]Đã đọc