Hướng dẫn python print buffer - bộ đệm in python

Xin chào mọi người, hiện mình đang tìm hiểu về python, thấy một phần khá hay và quan trọng đó là xử lý với file. Hôm nay, mình xin viết một bài nhỏ để chia sẻ những thứ mình học được. Trong python, văn bản được quản lý theo 2 kiểu:

Nội dung chính ShowShow

  • Đóng File
  • Đọc File
  • Sao chép File
  • Dẫn nhập
  • Khái quát về File trong Python
  • Mở File trong Python
  • Đóng File trong Python
  • Đọc File trong Python
  • Phương thức read
  • Phương thức readline
  • Phương thức readlines
  • Đọc file bằng constructor nhận iterable
  • Ghi File trong Python
  • Phương thức write
  • Kiểm soát con trỏ file
  • Phương thức seek
  • Câu lệnh with
  • Củng cố bài học
  • Đáp án bài trước
  • Câu hỏi củng cố
  • Kết luận
  • Thảo luận

  1. Văn bản thường
  2. Văn bản nhị phân Cùng với một số quyền như đọc, ghi file. Ta đi từng bước theo bên dưới nhé !

Mở File

Đầu tiên, khi làm việc với file, chúng ta cần mở file đó ra. Trong python việc này khá đơn giản

>>> content = ["Python 2.x\n", "Hello, World. I am learning Python"]
>>> myFile.writelines[content]
3 Ở đây myFile sẽ là đối tượng của tệp và open[]phương thức sẽ mở tệp được chỉ định trong [đường dẫn tệp]. Hai đối số khác, [access mode] sẽ cung cấp chế độ truy cập và [buffer size] sẽ hỏi xem có bao nhiêu khối dữ liệu được lấy ra từ tệp. Lưu ý rằng, với đường dẫn file là bắt buộc còn với 2 tham số acces mode và buffer size là phần tùy chọn. [đường dẫn tệp] có thể là đường dẫn đầy đủ của tệp hoặc nếu nó tồn tại trong cùng một tệp như một chương trình thì chỉ cung cấp tên là đủ

Trong trường hợp trên chỉ cần:

>>> content = ["Python 2.x\n", "Hello, World. I am learning Python"]
>>> myFile.writelines[content]
4

Tuy nhiên, trong các tình huống như

file.txt của bạn không nằm trong cùng thư mục như trong trường hợp trên, do đó ở đây bạn sẽ phải chỉ định toàn bộ vị trí như sau:

>>> content = ["Python 2.x\n", "Hello, World. I am learning Python"]
>>> myFile.writelines[content]
5

Như đã nói ở trên, làm việc với file chúng ta cần access mode , vậy acces mode gồm nhứng gì ?

  1. chế độ đọc - "r" cho các tệp văn bản và "rb"các tệp nhị phân. Con trỏ tệp trỏ vào đầu tệp

    >>> content = ["Python 2.x\n", "Hello, World. I am learning Python"]
    >>> myFile.writelines[content]
    
    6

  2. chế độ ghi - "w" cho các tệp văn bản và "wb"các tệp nhị phân. Con trỏ tệp trỏ vào đầu tệp.

    >>> content = ["Python 2.x\n", "Hello, World. I am learning Python"]
    >>> myFile.writelines[content]
    
    7

  3. chế độ nối thêm - "a" cho các tệp văn bản và "ab"các tệp nhị phân. Điểm trỏ tệp ở cuối tệp

    >>> content = ["Python 2.x\n", "Hello, World. I am learning Python"]
    >>> myFile.writelines[content]
    
    8

  4. chế độ đọc / ghi - "r+" hoặc "w+"cung cấp tùy chọn để thực hiện cả thao tác đọc và ghi trên cùng một đối tượng tệp. "rb+"hoặc "wb+"cho các tệp nhị phân. Con trỏ tệp trỏ vào đầu tệp.

    >>> content = ["Python 2.x\n", "Hello, World. I am learning Python"]
    >>> myFile.writelines[content]
    
    9

  5. nối / đọc - "a+" để bật chế độ đọc / nối thêm, "ab+"để thêm / đọc chế độ trên các tệp nhị phân. Điểm trỏ tệp ở cuối tệp.

    >>> file1 = open["original.txt", "r"]
    >>> file2 = open["duplicate.txt", "w"]
    >>> l = file1.readline[]
    >>> while l:
     		file2.write[l]
    		l = file1.readline[]
    >>> file1.close[]
    >>> file2.close[]
    
    0

Đóng File

Trong python, đóng file cực kỳ đơn giản, ta chỉ cần gọi

>>> file1 = open["original.txt", "r"]
>>> file2 = open["duplicate.txt", "w"]
>>> l = file1.readline[]
>>> while l:
 		file2.write[l]
		l = file1.readline[]
>>> file1.close[]
>>> file2.close[]
1

là có thể thực hiện thao tác đóng file

Đọc File

Python cung cấp cho chúng ta một phương thức đọc file khá quen thuộc

>>> file1 = open["original.txt", "r"]
>>> file2 = open["duplicate.txt", "w"]
>>> l = file1.readline[]
>>> while l:
 		file2.write[l]
		l = file1.readline[]
>>> file1.close[]
>>> file2.close[]
2 ,sẽ tiến hành đọc từng dòng bắt đầu vị trí của con trỏ. Để in toàn bộ nội dung của tệp, lặp lại từng dòng, chúng ta có thể sử dụng for:

for line in myFile:
    # will print all the lines one by one
    print line

Ghi File

>>> file1 = open["original.txt", "r"]
>>> file2 = open["duplicate.txt", "w"]
>>> l = file1.readline[]
>>> while l:
 		file2.write[l]
		l = file1.readline[]
>>> file1.close[]
>>> file2.close[]
3 chức năng được sử dụng để viết một chuỗi duy nhất vào tệp. Ví dụ, có một chuỗi

>>> content = "Hello, World. I am learning Python."
>>> myFile.write[content]

chúng ta có thể ghi nhiều nội dung trong với writelines

>>> content = ["Python 2.x\n", "Hello, World. I am learning Python"]
>>> myFile.writelines[content]

Sao chép File

Vậy khi chúng ta có 1 file, và muốn sao chép nó thì làm thế nào ? Rất may python đã trợ giúp ta điều đó, khá đơn giản bạn chỉ cần đọc toàn bộ 1 file, rồi ghi vào file khác:

>>> file1 = open["original.txt", "r"]
>>> file2 = open["duplicate.txt", "w"]
>>> l = file1.readline[]
>>> while l:
 		file2.write[l]
		l = file1.readline[]
>>> file1.close[]
>>> file2.close[]

Bên trên là một số khái niệm cơ bản về file mà mình đã tìm hiểu được thông qua quá trình tự học python. Các bạn hay học python, mình đảm bảo sẽ rất thú vị đó

Bài viết của mình được tham khảo từ trang : //www.studytonight.com/python

Dẫn nhập

Khái quát về File trong Python

Mở File trong PythonCÁCH XỬ LÝ FILE trong Python. Một trong những điều thiết yếu mà bất cứ ngôn ngữ lập trình nào bạn cũng đều phải tìm hiểu.

Đóng File trong Python

Đọc File trong Python

  • Phương thức read
  • Phương thức readline
  • Phương thức readlines
  • Đọc file bằng constructor nhận iterable

Ghi File trong Python

  • Phương thức write
  • Kiểm soát con trỏ file
  • Phương thức seek
  • Câu lệnh with
  • Củng cố bài học
  • Đáp án bài trước
  • Câu hỏi củng cố

Khái quát về File trong Python

Kết luận

Thảo luận

Văn bản thường

  • Văn bản nhị phân Cùng với một số quyền như đọc, ghi file. Ta đi từng bước theo bên dưới nhé !
  • Mở Fileescape sequence newline \n.

Đầu tiên, khi làm việc với file, chúng ta cần mở file đó ra. Trong python việc này khá đơn giản

>>> content = ["Python 2.x\n", "Hello, World. I am learning Python"]
>>> myFile.writelines[content]
3 Ở đây myFile sẽ là đối tượng của tệp và open[]phương thức sẽ mở tệp được chỉ định trong [đường dẫn tệp]. Hai đối số khác, [access mode] sẽ cung cấp chế độ truy cập và [buffer size] sẽ hỏi xem có bao nhiêu khối dữ liệu được lấy ra từ tệp. Lưu ý rằng, với đường dẫn file là bắt buộc còn với 2 tham số acces mode và buffer size là phần tùy chọn. [đường dẫn tệp] có thể là đường dẫn đầy đủ của tệp hoặc nếu nó tồn tại trong cùng một tệp như một chương trình thì chỉ cung cấp tên là đủ

  • 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

Khỏi phải bàn, muốn thao tác với file, ta phải mở file. Mà muốn mở file, ta cũng cần phải có file.

Ở đây, Kteam sẽ tạo một file, và sau đó mở CMD ở ngay trong thư mục chứ file đó để không gặp nhiều khó khăn trong việc xử lí đường dẫn [Việc xử lí đường dẫn, Kteam sẽ giới thiệu cách xử lí bằng thư viện os trong tương lai].CMD ở ngay trong thư mục chứ file đó để không gặp nhiều khó khăn trong việc xử lí đường dẫn [Việc xử lí đường dẫn, Kteam sẽ giới thiệu cách xử lí bằng thư viện os trong tương lai].

Tên file sẽ là: kteam.txtkteam.txt

Nội dung file:

How Kteam
Free Education

Share to better

print['hello world!']

Hàm open

Được rồi, bây giờ chúng ta sẽ mở file bằng cách sử dụng hàm open

Cú pháp:

open[file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None][file, mode='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.Ở mức độ cơ bản, chúng ta sẽ chỉ quan tâm đến 2 parameter: file mode.

Nếu các bạn muốn tìm hiểu rõ hơn về các parameter khác. Hãy dùng lệnh:

>>> help[open]

Ta sẽ bắt đầu bắc cách thử mở một file.

Lưu ý: Kteam xin được khuyến khích các bạn không sử dụng interactive prompt ở bài này. Kteam xin được khuyến khích các bạn không sử dụng interactive prompt ở bài này.

>>> file_object = open['kteam.txt']
>>> file_object

>>> type[file_object] # không cần quan tấm lắm

Lưu ý: hàm open trả về một file object. Đây cũng là một iterable.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.

Đó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:

.close[]close[]

open[file, mode='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.
  • Nếu các bạn muốn tìm hiểu rõ hơn về các parameter khác. Hãy dùng lệnh:

Ta sẽ bắt đầu bắc cách thử mở một file.

Lưu ý: Kteam xin được khuyến khích các bạn không sử dụng interactive prompt ở bài này.

>>> fobj = open['kteam.txt']
>>> fobj

>>> fobj.close[]
>>> fobj # sau khi đóng file, các phương thức xử lí sẽ không thể sử dụng được

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.

Đóng File trong Python

Cú pháp:

.read[size=-1]read[size=-1]

open[file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None] 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.

  • Công dụng:Ở mức độ cơ bản, chúng ta sẽ chỉ quan tâm đến 2 parameter: file và mode.
  • Nếu các bạn muốn tìm hiểu rõ hơn về các parameter khác. Hãy dùng lệnh:

Ta sẽ bắt đầu bắc cách thử mở một file.

>>> fobj = open['kteam.txt']
>>> data = fobj.read[]
>>> data
"How Kteam\nFree Education\n\nShare to better\n\nprint['hello world!']\n"
>>> print[data]
How Kteam
Free Education

Share to better

print['hello world!']

>>> fobj.read[] # con trỏ file ở vị trí cuối cùng, bạn không thể đọc được gì nữa
''
>>> fobj.close[] # nhớ đóng file

Lưu ý: Kteam xin được khuyến khích các bạn không sử dụng interactive prompt ở bài này.

>>> fobj = open['kteam.txt']
>>> fobj.read[2]
'Ho'
>>> fobj.read[10]
'w Kteam\nFr'
>>> fobj.read[20]
'ee Education\n\nShare '
>>> fobj.read[]
"to better\n\nprint['hello world!']\n"
>>> fobj.close[]

Lưu ý: hàm open trả về một file object. Đây cũng là một iterable.

Cú pháp:

.readline[size=-1]readline[size=-1]

open[file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None]Với parameter size thì hoàn toàn tương tự như phương thức read.

  • Công dụng:Ở mức độ cơ bản, chúng ta sẽ chỉ quan tâm đến 2 parameter: file và mode.newline hoặc hết file thì ngừng.
  • Nếu các bạn muốn tìm hiểu rõ hơn về các parameter khác. Hãy dùng lệnh:
  • Ta sẽ bắt đầu bắc cách thử mở một file.
  • Lưu ý: Kteam xin được khuyến khích các bạn không sử dụng interactive prompt ở bài này.

Ta sẽ bắt đầu bắc cách thử mở một file.

>>> content = "Hello, World. I am learning Python."
>>> myFile.write[content]
0

Lưu ý: Kteam xin được khuyến khích các bạn không sử dụng interactive prompt ở bài này.

Cú pháp:

.readlines[hint=-1]readlines[hint=-1]

open[file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None] hint.

Công dụng:Ở mức độ cơ bản, chúng ta sẽ chỉ quan tâm đến 2 parameter: file và mode. 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.

  • Nếu các bạn muốn tìm hiểu rõ hơn về các parameter khác. Hãy dùng lệnh:

Ta sẽ bắt đầu bắc cách thử mở một file.

>>> content = "Hello, World. I am learning Python."
>>> myFile.write[content]
1

Lưu ý: Kteam xin được khuyến khích các bạn không sử dụng interactive prompt ở bài này.

Lưu ý: hàm open trả về một file object. Đây cũng là một iterable.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.

>>> content = "Hello, World. I am learning Python."
>>> myFile.write[content]
2

Đóng File trong Python

>>> content = "Hello, World. I am learning Python."
>>> myFile.write[content]
3

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

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!

Cú pháp:

.write[text]write[text]

open[file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None]Phương thức này sẽ trả về số kí tự mà chúng ta ghi vào.

Ta sẽ bắt đầu bắc cách thử mở một file.

>>> content = "Hello, World. I am learning Python."
>>> myFile.write[content]
4

Lưu ý: Kteam xin được khuyến khích các bạn không sử dụng interactive prompt ở bài này.

Lưu ý: hàm open trả về một file object. Đây cũng là một iterable.

>>> content = "Hello, World. I am learning Python."
>>> myFile.write[content]
5

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.

Đóng File trong Python

>>> content = "Hello, World. I am learning Python."
>>> myFile.write[content]
6

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

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.

Cú pháp:

open[file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None]seek[offset, whence=0]

Công dụng:Ở mức độ cơ bản, chúng ta sẽ chỉ quan tâm đến 2 parameter: file và mode. whence = 0. whence = 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.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.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.

Ví dụ:

>>> content = "Hello, World. I am learning Python."
>>> myFile.write[content]
7

Câu lệnh with

Cấu trúc cơ bản của câu lệnh with là

>>> content = "Hello, World. I am learning Python."
>>> myFile.write[content]
8

  

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]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.__enter__ __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-block. File sẽ được đóng.

>>> content = "Hello, World. I am learning Python."
>>> myFile.write[content]
9

Tất nhiên, có thể sử dụng câu lệnh with kết hợp với toán tử := nhiên, có thể sử dụng câu lệnh with kết hợp với toán tử :=

>>> content = ["Python 2.x\n", "Hello, World. I am learning Python"]
>>> myFile.writelines[content]
0

Củng cố bài học

Đáp án bài trước

Bạn có thể tìm thấy câu hỏi của phần này tại CÂU HỎI CỦNG CỐ trong bài KIỂU DỮ LIỆU DICT TRONG PYTHON – Phần 2.

  1. Vì hai dict trỏ cùng vào một nơi. Cách khắc phúc là ta dùng phương thức copy để có bản sao dict1.
  1. Sẽ có lỗi ở
>>> content = ["Python 2.x\n", "Hello, World. I am learning Python"]
>>> myFile.writelines[content]
1

Câu hỏi củng cố

  1. Nêu sự khác nhau giữa mode r+ và w+
  1. Tèo mở file dưới mode vừa đọc và ghi. Tèo đang  thắc mắc là vì sao sau khi ghi xong rồi, mà Tèo vẫn không đọc được gì cả. Hãy giải đáp giúp Tèo.
>>> content = ["Python 2.x\n", "Hello, World. I am learning Python"]
>>> myFile.writelines[content]
2

Đáp án của phần này sẽ được trình bày ở bài tiếp theo. Tuy nhiên, Kteam khuyến khích bạn tự trả lời các câu hỏi để củng cố kiến thức cũng như thực hành một cách tốt nhất! 

Kết luận

Qua bài viết này, Bạn đã hiểu cơ bản về FILE TRONG PYTHON.

Ở bài viết sau. Kteam sẽ nói về ITERATION & MỘT SỐ HÀM CƠ BẢN hay được sử dụng.

Cảm ơn bạn đã theo dõi bài viết. Hãy để lại bình luận hoặc góp ý của mình để phát triển bài viết tốt hơn. Đừng quên “Luyện tập – Thử thách – Không ngại khó”.Luyện tập – Thử thách – Không ngại khó”.

Thảo luận

Nếu bạn có bất kỳ khó khăn hay thắc mắc gì về khóa học, đừng ngần ngại đặt câu hỏi trong phần bên dưới hoặc trong mục HỎI & ĐÁP trên thư viện Howkteam.com để nhận được sự hỗ trợ từ cộng đồng.

Bài Viết Liên Quan

Chủ Đề