Python handling cho người mưới bắt đầu
15/08/2022 04:31
Trong loạt bài hướng dẫn Python cho người mới bắt đầu , chúng tôi đã tìm hiểu thêm về Các hàm chuỗi Python trong hướng dẫn cuối cùng của chúng tôi.
Trong loạt bài hướng dẫn Python cho người mới bắt đầu , chúng tôi đã tìm hiểu thêm về Các hàm chuỗi Python trong hướng dẫn cuối cùng của chúng tôi.
Python cung cấp cho chúng ta một tính năng quan trọng để đọ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ó bản 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 thành. Do đó, tốt hơn là lưu những dữ liệu này vĩnh viễn bằng cách sử dụng tệp.
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 số 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 này rất dễ bay hơi.
Do đó, khi bạn chuẩn bị xử lý những tình huống như vậy, vai trò của tệp sẽ xuất hiện trong bức tranh.
Vì bản chất các tệp không dễ bay hơi nên 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à bằng cách 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ý các tệp. Nếu chúng ta muốn đọc dữ liệu từ một tệp hoặc ghi dữ liệu vào một tệp, thì trước hết, chúng ta sẽ mở tệp hoặc sẽ tạo một tệp mới nếu tệp chưa tồn tại và sau đó thực hiện các thao tác đọc / ghi bình thường. , Lưu file và đóng nó lại.
Tương tự, chúng tôi thực hiện các thao tác tương tự trong python bằng cách sử dụng một số phương thức hoặc hàm được tích hợp sẵn.
Các loại tệp trong Python
Có hai loại tệp trong Python và mỗi loại trong số chúng đượ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 ta 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 tài liệu: .pdf, .doc, .xls, v.v.
- Tệp hình ảnh: .png, .jpg, .gif, .bmp, v.v.
- Tệp video: .mp4, .3gp, .mkv, .avi, v.v.
- Tệp âm thanh: .mp3, .wav, .mka, .aac, v.v.
- Tệp cơ sở dữ liệu: .mdb, .accde, .frm, .sqlite, v.v.
- Lưu trữ tệp: .zip, .rar, .iso, .7z, v.v.
- Các tệp thực thi: .exe, .dll, .class, v.v.
Khuyến nghị đọ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ó bên 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 mà chỉ máy tính hoặc máy tính mới có thể hiểu được.
Để xử lý các tệp nhị phân như vậy, chúng ta cần một loại phần mềm cụ thể để mở nó.
Ví dụ: Bạn cần phần mềm Microsoft word để mở tệp nhị phân .doc. Tương tự như vậy, bạn cần một phần mềm đọc pdf để mở các tệp nhị phân .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 bằng 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, app, js, py, java, v.v.
- 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ẽ thấy cách xử lý cả 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 hoạt động có thể được Python xử lý trên tệp:
- Mở
- Đọ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 tích hợp được gọi là open () để mở một tệp.
Nó cần tối thiểu một đối số như được đề cập trong cú pháp bên dưới. 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 tích hợp sẵn khác.
Cú pháp:
file_object = open (tên_tệp, chế độ)
Ở đâ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 test.txt - thuật ngữ kiểm tra là tên của tệp và .txt là phần mở rộng của tệp.
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 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 đè dữ liệu có trong tệp.
- 'a' - Chế độ Nối: Chế độ Nối được sử dụng để nối dữ liệu vào tệp. Hãy nhớ rằng dữ liệu sẽ được nối 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ế độ Nối 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 dữ liệu vào cùng một tệp.
Lưu ý: 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ự với ký tự '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 cho 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ỉ thêm vào ở đị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 cho chế độ thêm và 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' có tại vị trí 'C: / Documents / Python /' và chúng tôi đang mở cùng một tệp ở chế độ đọc-ghi cho phé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ó tại vị trí “C: / Documents / Python /”, Nhưng ở đây chúng tôi đang cố gắng 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])
- readlines ()
Ở đây, n là số byte được đọc.
Đầu tiên, chúng ta hãy tạo một tệp văn bản mẫu như hình dưới đây.
Bây giờ chúng ta hãy quan sát những gì mỗi phương thức đọc làm:
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 tôi đang mở tệp test.txt ở chế độ chỉ đọc và chỉ đọc 5 ký tự đầu tiên của tệp bằng phương thức my_file.read (5).
Đầu ra:
Ví dụ 2:
my_file = open (“C: / Documents / Python / test.txt”, “r”) print (my_file.read()) |
Đầu ra:
Xin chào thế giới
Xin chào Python,
Chào buổi sáng
Ở đâ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ó bên 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 một.
Đầu ra:
Ví dụ 5:
my_file = open (“C: / Documents / Python / test.txt”, “r”) print (my_file.readlines()) |
Đầu ra:
['Hello World \ n', 'Hello Python \ n', 'Good Morning']
Ở đây chúng tôi đang đọc tất cả các dòng có bên trong tệp văn bản bao gồm các ký tự dòng mới.
Đầu ra:
Bây giờ chúng ta hãy xem một số ví dụ thực tế hơn về việc đọc một tệp.
Đọc một dòng cụ thể từ một tệp
line_number = 4 fo = open (“C: / Documents / Python / test.txt”, ’r’) currentline = 1 for line in fo: if (currentline = = line_number): print (line) break currentline = currentline + 1 |
Đầu ra:
Bạn có khỏe không
Trong ví dụ trên, chúng tôi đang cố gắng chỉ đọc dòng thứ 4 từ tệp 'test.txt' bằng cách sử dụng "vòng lặp for" .
Đầu ra:
Đọc toàn bộ tệp cùng một lúc
filename = “C: / Documents / Python / test.txt” filehandle = open (filename, ‘r’) filedata = filehandle.read() print (filedata) |
Đầu ra:
Xin chào thế giới
Xin chào Python
Chào buổi sáng
, bạn có khỏe không
Đầu ra:
Python Ghi vào tệp
Để ghi dữ liệu vào tệp, chúng ta phải mở tệp ở chế độ ghi.
Chúng ta cần phải rất cẩn thận khi ghi dữ liệu vào tệp vì nó sẽ ghi đè lên nội dung có bên trong tệp mà bạn đang ghi và tất cả dữ liệu trước đó sẽ bị xóa.
Chúng ta có hai phương pháp để ghi dữ liệu vào tệp như hình dưới đây.
- ghi (chuỗi)
- writelines (danh sách)
Ví dụ 1:
my_file = open (“C: / Documents / Python / test.txt”, “w”) my_file.write(“Hello World”) |
Đoạn mã trên ghi chuỗi 'Hello World' vào tệp 'test.txt'.
Trước khi ghi dữ liệu vào tệp test.txt:
Đầu ra:
Ví dụ 2:
my_file = open (“C: / Documents / Python / test.txt”, “w”) my_file.write(“Hello World\n”) my_file.write(“Hello Python”) |
Dòng đầu tiên sẽ là 'Hello World' và như chúng ta đã đề 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 'Hello Python'.
Hãy nhớ nếu chúng ta không đề cập đến ký tự \ n, thì dữ liệu sẽ được ghi liên tục trong tệp văn bản như 'Hello WorldHelloPython'
Đầu ra:
Ví dụ 3:
fruits = [“Apple\n”, “Orange\n”, “Grapes\n”, “Watermelon”] my_file = open (“C: / Documents / Python / test.txt”, “w”) my_file.writelines(fruits) |
Đoạn mã trên ghi danh sách dữ liệu vào tệp 'test.txt' đồng thời.
Đầu ra:
Python Nối vào Tệp
Để nối dữ liệu vào một tệp, chúng ta phải mở tệp ở chế độ 'a +' để chúng ta có quyền truy cập vào cả chế độ nối và ghi.
Ví dụ 1:
my_file = open (“C: / Documents / Python / test.txt”, “a + ”) my_file.write (“Strawberry”) |
Đoạn mã trên nối chuỗi 'Apple' vào cuối tệp 'test.txt'.
Đầu ra:
Ví dụ 2:
my_file = open (“C: / Documents / Python / test.txt”, “a + ”) my_file.write (“\nGuava”) |
Đoạn mã trên nối chuỗi 'Apple' vào cuối tệp 'test.txt' trong một dòng mới .
Đầu ra:
Ví dụ 3:
fruits = [“\nBanana”, “\nAvocado”, “\nFigs”, “\nMango”] my_file = open (“C: / Documents / Python / test.txt”, “a + ”) my_file.writelines(fruits) |
Đoạn mã trên nối danh sách dữ liệu vào tệp 'test.txt'.
Đầu ra:
Ví dụ 4:
text = ["\nHello","\nHi","\nPython"] my_file = open ("C: / Documents / Python / test.txt",mode = "a + ") my_file.writelines(text) print ("where the file cursor is :",my_file.tell()) my_file.seek( 0 ) for line in my_file: print (line) |
Trong đoạn mã trên, chúng tôi đang thêm danh sách dữ liệu vào tệp 'test.txt'. Ở đây, bạn có thể thấy rằng chúng tôi đã sử dụng phương thức tell () để in ra vị trí hiện tại của con trỏ.
seek (offset): offset nhận ba loại đối số là 0,1 và 2.
Khi offset là 0: Tham chiếu sẽ được trỏ ở đầu tệp.
Khi độ lệch là 1: Tham chiếu sẽ được trỏ vào vị trí con trỏ hiện tại.
Khi độ lệch là 2: Tham chiếu sẽ được trỏ vào cuối tệp.
Đầu ra:
Python Đóng tệp
Để đóng một tệp, trước tiên chúng ta phải mở tệp. Trong python, chúng tôi có một phương thức tích hợp đượ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 nó, đặc biệt, với phương thức ghi. Bởi vì nếu chúng ta không gọi hàm close 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:
my_file = open (“C: / Documents / Python / test.txt”, “r”) print (my_file.read()) my_file.close() |
Ví dụ 2:
my_file = open (“C: / Documents / Python / test.txt”, “w”) my_file.write(“Hello World”) my_file.close() |
Đổi tên hoặc xóa tệp trong Python
Python cung cấp cho chúng tôi một mô-đun “os” có một số phương thức tích hợp sẵn sẽ giúp chúng tôi 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” trong 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 rename ():
Phương thức rename () này chấp nhận hai đối số tức là tên tệp hiện tại và tên tệp mới.
Cú pháp:
os.rename (tên_tệp_ hiện_tại, tên_tệp_tính mới)
Ví dụ 1:
import os os.rename(“test.txt”, “test1.txt”) |
Ở đây 'test.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ụ dưới đây.
Ví dụ 2:
import os os.rename(“C: / Documents / Python / test.txt”, “C: / Documents / Python / test1.txt”) |
Trước khi đổi tên tệp:
Sau khi thực hiện chương trình trên
phương thức remove ():
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:
os.remove (tên_tệp)
Ví dụ 1:
import os os.remove(“test.txt”) |
Đây 'test.txt' là tệp bạn muốn xóa.
Tương tự, chúng ta có thể chuyển vị trí tệp cũng như các đối số như được hiển thị trong ví dụ dưới đây
Ví dụ 2:
import os os.remove(“C: / Documents / Python / test.txt”) |
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ột 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 dưới đây.
- 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:
my_file = open (“C: / Documents / Python / test.txt”, mode = ”r”) print (“Microsoft Windows encoding format by default is :”, my_file.encoding) my_file.close() |
Đầu ra:
Định dạng mã hóa Microsoft Windows theo mặc định là cp1252.
Ở đây, tôi đã thực thi chương trình của mình trên máy windows, vì vậy nó đã in mã hóa mặc định là 'cp1252'.
Đầu ra:
Chúng tôi cũng có thể thay đổi định dạng mã hóa của một tệp bằng cách chuyển nó làm đối số cho hàm mở.
Ví dụ 2:
my_file = open (“C: / Documents / Python / test.txt”, mode = ”w”, encoding = ”cp437”) print (“ File encoding format is :”, my_file.encoding) my_file.close() |
Đầu ra:
Định dạng mã hóa tệp là: cp437
Đầu ra:
Ví dụ 3:
my_file = open (“C: / Documents / Python / test.txt”, mode = ”w”, encoding = ”utf - 16 ”) print (“ File encoding format is :”, my_file.encoding) my_file.close() |
Đầu ra:
Định dạng mã hóa tệp là: utf-16
Đầu ra:
Ghi 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 (số 0 và số 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 con người có thể đọc được.
Thí dụ:
# Hãy tạo một số tệp nhị phân.
my_file = open (“C: / Documents / Python / bfile. bin ”, “wb + ”) message = “Hello Python” file_encode = message.encode(“ASCII”) my_file.write(file_encode) my_file.seek( 0 ) bdata = my_file.read() print (“Binary Data:”, bdata) ntext = bdata.decode(“ASCII”) print (“Normal data:”, ntext) |
Trong ví dụ trên, đầu tiên chúng ta đang tạo một tệp nhị phân 'bfile.bin' với quyền đọc và ghi và bất kỳ dữ liệu nào bạn muốn nhập vào tệp đều 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 cần giải mã, để 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 dữ liệu tương tự bằng cách giải mã để 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 Python
Đầu ra:
Thuộc tính I / O của tệp
Thuộc tính | Sự mô tả |
---|---|
Tên | Trả lại tên của tệp |
Cách thức | Chế độ trả lại của tệp |
Mã hóa | Trả lại định dạng mã hóa của tệp |
Đã đóng cửa | Trả về true nếu tệp được đóng lại khác trả về false |
Thí dụ:
my_file = open (“C: / Documents / Python / test.txt”, “a + ”) print (“What is the file name? ”, my_file.name) print (“What is the file mode? ”, my_file.mode) print (“What is the encoding format ? ”, my_file.encoding) print (“Is File closed? ”, my_file.closed) my_file.close() print (“Is File closed? ”, my_file.closed) |
Đầu ra:
Tên tệp là gì? C: /Documents/Python/test.txt
Chế độ tệp là gì? Định
dạng mã hóa là gì? cp1252
Tập tin có bị đóng không? Sai
Tập tin có bị đóng không? ĐÚNG VẬY
Đầ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”, “w + ”) my_file.write(“Hello Python\nHello World\nGood Morning”) my_file.seek( 0 ) print (my_file.read()) print (“Is file readable: ?”, my_file.readable()) print (“Is file writeable: ?”, my_file.writable()) print (“ File no:”, my_file.fileno()) my_file.close() |
Đầu ra:
Hello Python
Xin chào thế giới
Chào buổi sáng
Tệp có thể đọc được không:? Đúng
Là tệp có thể ghi:? True
File no: 3
Đầu ra:
Phương thức tệp Python
Hàm số | Giải trình |
---|---|
mở() | Để mở một tệp |
gần() | Đóng một tệp đang mở |
thư mục số() | Trả về một số nguyên của tệp |
đọc (n) | Đọc các ký tự 'n' từ tệp cho đến cuối tệp |
có thể đọc được () | Trả về true nếu tệp có thể đọc được |
readline () | Đọc và trả lại một dòng từ tệp |
readlines () | Đọc và trả về tất cả các dòng từ tệp |
tìm kiếm (bù đắp) | Thay đổi vị trí con trỏ theo byte như được chỉ định bởi độ lệch |
có thể tìm kiếm () | Trả về true nếu tệp hỗ trợ truy cập ngẫu nhiên |
kể() | Trả về vị trí tệp hiện tại |
có thể ghi () | Trả về true nếu tệp có thể ghi |
viết() | Ghi một chuỗi dữ liệu vào tệp |
writelines () | Ghi danh sách dữ liệu vào tệp |