Phần 6:Khái quát về File trong Python

0
Trong Python, file có 2 loại:
Text File
Được cấu trúc như một dãy các dòng, mỗi dòng bao gồm một dãy các kí tự và một dòng tối thiểu là một kí tự dù cho dòng đó là dòng trống.
Các dòng trong text file được ngăn cách bởi một kí tự newline và mặc định trong Python chính là kí tự escape sequence newline \n.
Binary File
Các file này chỉ có thể được xử lí bởi một ứng dụng biết và có thể hiểu được cấu trúc của file này.
Và chúng ta ở đây với mức độ cơ bản chỉ xử lí text file
Mở File trong Python

Hàm open

Cú pháp:

open(filemode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)
Công dụng: Ở mức độ cơ bản, chúng ta sẽ chỉ quan tâm đến 2 parameter: file và mode.
Lưu ý: hàm open trả về một file object. Đây cũng là một iterable.
Tiếp đến là các mode mở file. Và cũng với mức độ cơ bản, Kteam sẽ cung cấp một số mode cơ bản liên quan đến text file.
Chế độ miêu tả
'r'Mở một tệp để đọc. (mặc định)
'w'Mở một tập tin để viết. Tạo một tệp mới nếu nó không tồn tại hoặc cắt bớt tệp nếu nó tồn tại.
'x'Mở một tệp để tạo độc quyền. Nếu tệp đã tồn tại, thao tác không thành công.
'a'Mở để thêm vào cuối tệp mà không cắt xén nó. Tạo một tệp mới nếu nó không tồn tại.
't'Mở ở chế độ văn bản. (mặc định)
'b'Mở ở chế độ nhị phân.
'+'Mở một tệp để cập nhật (đọc và viết)

Đóng File trong Python

Đây là việc chúng ta nên làm sau khi thao tác xong với file. Đó là đóng file.

Cú pháp:

<File>.close()
Tại sao chúng ta nên đóng file sau khi hoàn tất công việc với file?
  • Giới hạn hệ điều hành. Chẳng hạn một hệ điều hành chỉ cho mở một số file nhất định cùng lúc thì nếu quên đóng file sẽ gây hao tốn. Đặc biệt là các file với dung lượng bự.
  • Khi một file được mở, hệ điều hành sẽ khóa file đó lại, không cho các chương trình khác có thể xử lí trên file đó nữa nhằm đảm bảo tính nhất quán của dữ liệu.
Do đó hãy close file khi xong việc!
Dẫu vậy, nếu chương trình kết thúc. Tất cả các file đang mở cũng sẽ được đóng lại. Tuy nhiên việc đóng file vẫn là trách nhiệm nằm ở chúng ta.

Đọc File trong Python

Ta có một số phương thức có thể lấy được nội dung của file

Phương thức read

Cú pháp:

<File>.read(size=-1)
Công dụng: Nếu size bị bỏ trống hoặc là một số âm. Nó sẽ đọc hết nội dung của file đồng thời đưa con trỏ file tới cuối file. Nếu không nó sẽ đọc tới n kí tự (với n = size) hoặc cho tới khi nội dung của file đã đọc xong.
  • Sau khi đọc được nội dung, nó sẽ trả về dưới một dạng chuỗi.
  • Nếu không đọc được gì, phương thức sẽ trả về một chuỗi có độ dài bằng 0
Ví dụ:

Phương thức readlines

Cú pháp:

<File>.readlines(hint=-1)
Ở mức độ cơ bản, ta không phải quan tâm đến parameter hint.
Công dụng: Phương thức này sẽ đọc toàn bộ file, sau đó cho chúng vào một list. Với các phần tử trong list là mỗi dòng của file.
  • Con trỏ file sẽ được đưa  tới cuối file. Khi đó, nếu bạn tiếp tục dùng readlines. Bạn sẽ nhận được một list rỗng.

Ví dụ:

Đọc file bằng constructor nhận iterable

Như đã nói, file object nhận được từ hàm open cũng là một iterable.
ta có thể sử dụng constructor list
vd: file text có nội dung 
'

ta có thể sử dụng constructor list

Và cũng có thể là Tuple.

Ghi File trong Python

Chúng ta có sự giúp đỡ của phương thức write để ghi nội dung vào file.
Và chúng ta cũng không cần phải tạo file. Vì các mode ghi sẽ giúp chúng ta tạo file.

Phương thức write

Cú pháp:

<File>.write(text)
Công dụng: Phương thức này sẽ trả về text mà chúng ta ghi vào.

Kiểm soát con trỏ file

Bạn có thể thấy, con trỏ file rất quan trọng, nó dẫn đường cho việc đọc file, viết file. Và bạn cũng cần phải kiểm soát được nó.
Việc đó, ta sẽ nhờ tới phương thức seek

Phương thức seek

Cú pháp:

<File>.seek(offsetwhence=0)
Với Python 3.X. Một text file sẽ chỉ được sử dụng whence = 0whence = 1 hoặc whence = 2 chỉ sử dụng với binary file.
Với Python 2.X thì bạn không phải quan tấm vấn đề này.
Do đó, ta cũng không cần quan tâm tới parameter whence.
Công dụng: Phương thức này giúp ta di chuyển con trỏ từ vị trí đầu file qua offset kí tự. Và parameter offset phải là một số tự nhiên.
  • Nhờ phương thức này, ta có thể ghi nội dung từ bất cứ đâu trong file.
  • Và từ đó ta có thể đọc lại file sau khi ta đưa con trỏ file xuống cuối file.
>>> fobj = open('kteam.txt') >>> fobj.read() "How Kteam\nFree Education\n\nShare to better\n\nprint('hello world!')\n" >>> fobj.read() '' >>> fobj.seek(0) 0 >>> fobj.read() "How Kteam\nFree Education\n\nShare to better\n\nprint('hello world!')\n" >>> fobj.seek(10) 10 >>> fobj.read() "\nFree Education\n\nShare to better\n\nprint('hello world!')\n" >>> fobj.close()
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14

Câu lệnh with

Cấu trúc cơ bản của câu lệnh with là
with expression [as variable]: with-block
0
1
2

  
Nhớ rằng with-block nằm thụt vào so với dòng with expression (theo chuẩn PEP8 là 4 space và là dùng space không dùng tab)
Câu lệnh này liên quan đến phương thức __enter__ và __exit__ của đối tượng. Do đó, ở đây Kteam sẽ nói cơ bản khi sử dụng file.
Đặc điểm của câu lệnh with khi sử dụng với file là. Khi kết thúc with-block. File sẽ được đóng.
>>> with open('kteam.txt') as fobj: ... data = fobj.read() ... >>> data "How Kteam\nFree Education\n\nShare to better\n\nprint('hello world!')\n" >>> fobj.read() # không thể đọc file, vì file đã đóng Traceback (most recent call last): File "<stdin>", line 1, in <module> ValueError: I/O operation on closed file.

Kết luận

Qua bài viết này, đã nắm được Khái quát về File trong Python.
Nguồn:www.howkteam.vn
Tags

Post a Comment

0Comments
Post a Comment (0)