Hướng dẫn dùng readfile python python

Trong bài viết này, Quantrimang sẽ cùng bạn tìm hiểu về các hoạt động của file trong Python. Cụ thể hơn là về cách mở file, đọc file, ghi file, đóng file cũng như các phương thức làm việc với tập tin mà bạn nên biết. Hãy cùng theo dõi.

File là gì?

File hay còn gọi là tệp, tập tin. File là tập hợp của các thông tin được đặt tên và lưu trữ trên bộ nhớ máy tính như đĩa cứng, đĩa mềm, CD, DVD,...

Khi muốn đọc hoặc ghi file, chúng ta cần phải mở file trước. Khi hoàn thành, file cần phải được đóng lại để các tài nguyên được gắn với file được giải phóng.

Do đó, trong Python, một thao tác với file diễn ra theo thứ tự sau.

  1. Mở tệp tin
  2. Đọc hoặc ghi
  3. Đóng tệp

Mở File trong Python

Trong Python, có một hàm được xây dựng sẵn phục vụ cho việc mở file: open[]. Hàm này trả về đối tượng file hay còn gọi là “handle” vì bạn có thể thực hiện các hoạt động đọc, ghi, sửa đổi trên file đó.

>>> f = open["test.txt"] # mở file cùng thư mục với file hiện tại
>>> f = open["C:/Python33/README.txt"] # mở file ở thư mục khác, đường dẫn đầy đủ

Bạn có thể xác định cách thức mà tập tin được mở ra để làm gì như read, write, append,... Đây là thông số tùy chọn có thể có hoặc không. Ngoài ra bạn cũng có thể định rõ file mở ra dạng văn bản hay dạng nhị phân.

Chế độ truy cập file mặc định là read [r]. Khi dùng mode này chúng ta sẽ nhận được giá trị chuỗi trả về dạng văn bản.

Mặt khác nếu giá trị trả về ở dạng byte thì tệp được mở ra là hình ảnh hoặc exe.

Dưới đây là danh sách các chế độ mode khác nhau khi mở một file:

MODEMÔ TẢ‘r’Chế độ chỉ được phép đọc.‘r+’Chế độ được phép đọc và ghi‘rb’Mở file chế độ đọc cho định dạng nhị phân. Con trỏ tại phần bắt đầu của file‘rb+’
‘r+b’Mở file để đọc và ghi trong định dạng nhị phân. Con trỏ tại phần bắt đầu của file‘w’Mở file để ghi. Nếu file không tồn tại thì sẽ tạo mới file và ghi nội dung, nếu file đã tồn tại thì sẽ bị cắt bớt [truncate] và ghi đè lên nội dung cũ‘w+’Mở file để đọc và ghi. Nếu file không tồn tại thì sẽ tạo mới file và ghi nội dung, nếu file đã tồn tại thì sẽ bị cắt bớt [truncate] và ghi đè lên nội dung cũ‘wb’Mở file để ghi cho dạng nhị phân. Nếu file không tồn tại thì sẽ tạo mới file và ghi nội dung, nếu file đã tồn tại thì sẽ bị cắt bớt [truncate] và ghi đè lên nội dung cũ‘wb+’
‘w+b’Mở file để đọc và ghi cho dạng nhị phân. Nếu file không tồn tại thì sẽ tạo mới file và ghi nội dung, nếu file đã tồn tại thì sẽ bị cắt bớt [truncate] và ghi đè lên nội dung cũ‘a’Mở file chế độ ghi tiếp. Nếu file đã tồn tại rồi thì nó sẽ ghi tiếp nội dung vào cuối file, nếu file không tồn tại thì tạo một file mới và ghi nội dung vào đó.‘a+’Mở file chế độ đọc và ghi tiếp. Nếu file đã tồn tại rồi thì nó sẽ ghi tiếp nội dung vào cuối file, nếu file không tồn tại thì tạo một file mới và ghi nội dung vào đó.‘ab’,Mở file chế độ ghi tiếp ở dạng nhị phân. Nếu file đã tồn tại rồi thì nó sẽ ghi tiếp nội dung vào cuối file, nếu file không tồn tại thì tạo một file mới và ghi nội dung vào đó.‘ab+’
‘a+bMở file chế độ đọc và ghi tiếp ở dạng nhị phân. Nếu file đã tồn tại rồi thì nó sẽ ghi tiếp nội dung vào cuối file, nếu file không tồn tại thì tạo một file mới và ghi nội dung vào đó.‘x’Mở file chế độ ghi. Tạo file độc quyền mới [exclusive creation] và ghi nội dung, nếu file đã tồn tại thì chương trình sẽ báo lỗi‘x+’Mở file chế độ đọc và ghi. Tạo file độc quyền mới [exclusive creation] và ghi nội dung, nếu file đã tồn tại thì chương trình sẽ báo lỗi‘xb’Mở file chế độ ghi dạng nhị phân. Tạo file độc quyền mới và ghi nội dung, nếu file đã tồn tại thì chương trình sẽ báo lỗi‘xb+’
‘x+b’Mở file chế độ đọc và ghi dạng nhị phân. Tạo file độc quyền mới và ghi nội dung, nếu file đã tồn tại thì chương trình sẽ báo lỗi‘b’Mở file ở chế độ nhị phân‘t’Mở file ở chế độ văn bản [mặc định]

f = open["test.txt"] # mở file mode 'r' hoăc 'rt' để đọc

f = open["test.txt",'w'] # mở file mode ‘w’ để ghi
f = open["img.bmp",'r+b'] # mở file mode ‘r+b’ để đọc và ghi dạng nhị phân

Khi làm việc với các tệp ở chế độ văn bản, bạn nên chỉ định loại mã hóa.

f = open["test.txt",mode = 'r',encoding = 'utf-8']

Đóng File trong Python

Sau khi thực hiện xong các thao tác với file thì bạn cần đóng nó lại.

Đóng file để đảm bảo quy chế đóng mở và giải phóng bộ nhớ cho chương trình nên điều này là cần thiết.

Việc đóng file được xây dựng trong Python bằng hàm close[].

Python cũng tự động đóng một file khi đối tượng tham chiếu của file đã được tái gán cho một file khác. Tuy nhiên, sử dụng phương thức close[] để đóng một file vẫn tốt hơn.

f = open["test.txt",encoding = 'utf-8']
# thực hiện các thao tác với tệp
f.close[]

Tuy nhiên cách này chưa thực sự đảm bảo. Vẫn có trường hợp một số ngoại lệ xảy ra khi chúng ta thực hiện các thao tác với file khiến chương trình tự động thoát ra mà không đóng tệp.

Để đảm bảo hơn, bạn nên sử dụng khối lệnh try...finally [finally sẽ luôn luôn được thực thi bất chấp có hay không ngoại lệ] ở đây.

try:
f = open["test.txt",encoding = 'utf-8']
# thực hiện các thao tác với tệp
finally:
f.close[]

Bằng cách này, ta có thể yên tâm file được đóng đúng ngay cả khi phát sinh ngoại lệ khiến chương trình dừng đột ngột.

Một cách khác để đóng file là sử dụng câu lệnh with. Lệnh with cho chúng ta bảo đảm rằng file luôn luôn được đóng mà không cần biết những logic xử lý bên trong.

with open["test.txt",encoding = 'utf-8'] as f:
# thực hiện các thao tác với tệp

So sánh hai cách viết này thì chúng ta đã thấy rất rõ ràng rằng, sử dụng with cho chúng ta cách viết code ngắn gọn hơn hẳn.

Ghi File trong Python

Để ghi một file ta cần mở file bằng cú pháp để ghi, sử dụng mode write ‘w’, append ‘a’ hoặc mode tạo độc quyền ‘x’

Bạn cần cẩn thận với chế độ ‘w’, vì nó ghi đè lên nội dung nếu file đã tồn tại, các dữ liệu trước đó sẽ bị xóa.

Nếu bạn ghi vào file dạng nhị phân các chuỗi văn bản hoặc chuỗi dạng byte thì kết quả trả về sẽ là số kí tự được ghi vào file.

with open["test.txt",'w',encoding = 'utf-8'] as f:
f.write["Quantrimang\n"]
f.write["Kiến thức - Kinh nghiệm - Hỏi đáp\n\n"]
f.write["Quantrimang.com\n"]

Với ví dụ trên, chương trình sẽ tạo một file có tên là test.txt nếu tệp chưa tồn tại, nếu tồn tại rồi sẽ bị ghi đè lên.

Sử dụng các kí tự ‘\n’ để phân biệt các dòng với nhau.

Kết quả được trả về là:

Quantrimang
Kiến thức - Kinh nghiệm - Hỏi đáp

Quantrimang.com

Đọc File trong Python

Tương tự ghi file, để đọc một file ta cần mở file bằng cú pháp để đọc, sử dụng mode read ‘r’.

Dùng read[size]

Sử dụng phương thức read[size] để lấy về dữ liệu có kích thước bằng size. Nếu để trống tham số này thì nó sẽ đọc hết file hoặc nếu file quá lớn thì nó sẽ đọc đến khi giới hạn của bộ nhớ cho phép.

f = open["test.txt",'r',encoding = 'utf-8']
a = f.read[12] # đọc 12 kí tự đầu tiên
print['Nội dung 11 kí tự đầu là:\n', [a]]
b = f.read[35] # đọc 35 kí tự tiếp theo
print['Nội dung 35 kí tự tiếp theo là:\n', [b]]
c = f.read[] # đọc phần còn lại
print['Nội dung phần còn lại là:\n', [c]]

Chạy chương trình, kết quả trả về là:

Nội dung 12 kí tự đầu là:
Quantrimang

Nội dung 35 kí tự tiếp theo là:
Kiến thức - Kinh nghiệm - Hỏi đáp

Nội dung phần còn lại là:
Quantrimang.com

Dùng tell[] và seek[]

Ngoài ra, ta có phương thức tell[] cho bạn biết vị trí hiện tại bên trong file. Nói cách khác, việc đọc và ghi tiếp theo sẽ diễn ra tiếp tục trên các byte đó.

Phương thức seek[] thay đổi vị trí hiện tại bên trong file.


f = open["test.txt"] # mở file mode 'r' hoăc 'rt' để đọc

f = open["test.txt",'w'] # mở file mode ‘w’ để ghi
f = open["img.bmp",'r+b'] # mở file mode ‘r+b’ để đọc và ghi dạng nhị phân
0

Kết quả trả về:


f = open["test.txt"] # mở file mode 'r' hoăc 'rt' để đọc

f = open["test.txt",'w'] # mở file mode ‘w’ để ghi
f = open["img.bmp",'r+b'] # mở file mode ‘r+b’ để đọc và ghi dạng nhị phân
1

Dùng readline[]

Phương thức này cho phép đọc từng dòng trong file:


f = open["test.txt"] # mở file mode 'r' hoăc 'rt' để đọc

f = open["test.txt",'w'] # mở file mode ‘w’ để ghi
f = open["img.bmp",'r+b'] # mở file mode ‘r+b’ để đọc và ghi dạng nhị phân
2

Kết quả in ra màn hình:


f = open["test.txt"] # mở file mode 'r' hoăc 'rt' để đọc

f = open["test.txt",'w'] # mở file mode ‘w’ để ghi
f = open["img.bmp",'r+b'] # mở file mode ‘r+b’ để đọc và ghi dạng nhị phân
3

Dùng readlines[]

Phương thức readlines[] trả về toàn bộ các dòng còn lại trong file và trả về giá trị rỗng khi kết thúc file.


f = open["test.txt"] # mở file mode 'r' hoăc 'rt' để đọc

f = open["test.txt",'w'] # mở file mode ‘w’ để ghi
f = open["img.bmp",'r+b'] # mở file mode ‘r+b’ để đọc và ghi dạng nhị phân
4

Kết quả hiện thị trên màn hình:


f = open["test.txt"] # mở file mode 'r' hoăc 'rt' để đọc

f = open["test.txt",'w'] # mở file mode ‘w’ để ghi
f = open["img.bmp",'r+b'] # mở file mode ‘r+b’ để đọc và ghi dạng nhị phân
5

Một số phương thức làm việc với File trong Python

Có rất nhiều phương thức khác nhau để làm việc với file được tích hợp sẵn trong Python, trong đó có một vài phương thức đã được Quantrimang tìm hiểu ở trên.

Bảng dưới đây là danh sách đầy đủ các phương thức dưới dạng text, các bạn tham khảo thêm.

PHƯƠNG THỨCMÔ TẢclose[]Đóng một file đang mở. Nó không thực thi được nếu tập tin đã bị đóng.fileno[]Trả về một số nguyên mô tả file [file descriptor].flush[]Xóa sạch bộ nhớ đệm của luồng file.isatty[]Trả về TRUE nếu file được kết nối với một thiết bị đầu cuối.read[n]Đọc n kí tự trong file.readable[]Trả về TRUE nếu file có thể đọc được.readline[n=-1]Đọc và trả về một dòng từ file. Đọc nhiều nhất n byte/ký tự nếu được chỉ định.readlines[n=-1]Đọc và trả về một danh sách các dòng từ file. Đọc nhiều nhất n byte/ký tự nếu được chỉ định.seek[offset,from=SEEK_SET]Thay đổi vị trí hiện tại bên trong file.seekable[]Trả về TRUE nếu luồng hỗ trợ truy cập ngẫu nhiên.tell[]Trả về vị trí hiện tại bên trong file.truncate[size=None]Cắt gọn kích cỡ file thành kích cỡ tham số size.writable[]Trả về TRUE nếu file có thể ghi được.write[s]Ghi s kí tự vào trong file và trả về.writelines[lines]Ghi một danh sách các dòng và file.

Xem thêm:

  • Kiểu dữ liệu trong Python
  • Các hàm trong Python
  • Các loại biến trong Python

Bài trước: Ma trận trong Python

Bài tiếp: Quản lý File và thư mục trong Python

  • Hàm open[] trong Python

Thứ Năm, 22/08/2019 10:33

4,515 👨 94.386

#Python #

0 Bình luận

Sắp xếp theo

Xóa Đăng nhập để Gửi

Bạn nên đọc

  • Microsoft đang khắc phục một trong những vấn đề khó chịu nhất trên taskbar Windows 11
  • Epson ra mắt máy chiếu tương tác ở VN
  • Hô biến màn hình iPhone thành đen trắng
  • Cách tải sticker Chú chim màu tím ngộ nghĩnh trên Facebook
  • 9/10 PC bị nhiễm spyware
  • Samsung chia sẻ mã nguồn mở của Galaxy Tab

Python

  • Viết chương trình in ra Tam giác Pascal bằng Python
  • Lập trình công cụ phát hiện khuôn mặt bằng Python
  • Danh sách Keyword trong Python
  • Viết chương trình tính căn bậc hai của một số bằng Python
  • Python là gì? Tại sao nên chọn Python?
  • Viết chương trình kiểm tra một số có phải lũy thừa của 2 không bằng Python
Xem thêm

Python 3

  • Python cơ bản
    • Python là gì? Tại sao nên chọn Python?
    • Cách cài đặt Python trên Windows, macOS, Linux
    • Từ khóa và định danh
    • Cách viết lệnh, thụt lề và chú thích
    • Kiểu dữ liệu: chuỗi, số, list, tuple, set và dictionary
    • Tìm hiểu chương trình Python đầu tiên
    • Mảng trong Python
    • Cách sử dụng List comprehension
  • Điều khiển luồng và vòng lặp
    • Lệnh if, if...else, if...elif...else
    • Vòng lặp for
    • Vòng lặp while
    • Lệnh break và continue
    • Lệnh pass
    • Các kỹ thuật vòng lặp
  • Hàm Python
    • Các hàm trong Python
    • Các hàm Python tích hợp sẵn
    • Hàm Python do người dùng tự định nghĩa
    • Tham số hàm Python
    • Hàm đệ quy trong Python
    • Hàm vô danh, Lambda
    • Các loại biến trong Python
    • Từ khóa global
    • Module
    • Pakage
  • File trong Python
    • Làm việc với File
    • Quản lý File và thư mục
    • Error [Lỗi] và Exception [Ngoại lệ]
    • Xử lý ngoại lệ - Exception Handling
  • Class và Object trong Python
    • Lập trình hướng đối tượng - OOP
    • Tìm hiểu Class và Object
    • Kế thừa [Inheritance]
    • Đa kế thừa [Multiple Inheritance]
    • Nạp chồng toán tử
  • Python nâng cao
    • Ma trận trong Python
    • Đối tượng Iterator trong Python
    • Generator trong Python
    • Closure trong Python
    • Decorator trong Python
    • @property trong Python
    • RegEx trong Python
  • Datetime trong Python
    • Datetime trong Python
    • Hàm datetime.strftime[]
    • Hàm datetime.strptime[]
    • Ngày giờ hiện tại
    • Chuyển đổi timestamp
    • Module time
    • Hàm time.sleep[]
  • Bài tập Python
    • Hơn 100 bài tập Python có lời giải [code mẫu]
    • Giải phương trình bậc 2 một ẩn bằng Python
  • Trắc nghiệm Python
    • Python Quiz - Phần 1
    • Python Quiz - Phần 2
    • Python Quiz - Phần 3
    • Python Quiz - Phần 4
    • Python Quiz - Phần 5
    • Python Quiz - Phần 6
    • Python Quiz - Phần 7
    • Python Quiz - Phần 8
    • Python Quiz - Phần 9
    • Python Quiz - Phần 10
    • Python Quiz - Phần 11

  • Công nghệ
    • Ứng dụng
    • Hệ thống
    • Game - Trò chơi
    • iPhone
    • Android
    • Linux
    • Nền tảng Web
    • Đồng hồ thông minh
    • Chụp ảnh - Quay phim
    • macOS
    • Phần cứng
    • Thủ thuật SEO
    • Kiến thức cơ bản
    • Raspberry Pi
    • Dịch vụ ngân hàng
    • Lập trình
    • Dịch vụ công trực tuyến
    • Dịch vụ nhà mạng
    • Nhà thông minh
  • Download
    • Ứng dụng văn phòng
    • Tải game
    • Tiện ích hệ thống
    • Ảnh, đồ họa
    • Internet
    • Bảo mật, Antivirus
    • Họp, học trực tuyến
    • Video, phim, nhạc
    • Mail
    • Lưu trữ đám mây
    • Giao tiếp, liên lạc, hẹn hò
    • Hỗ trợ học tập
    • Máy ảo
  • Tiện ích
  • Khoa học
    • Khoa học vui
    • Khám phá khoa học
    • Bí ẩn - Chuyện lạ
    • Chăm sóc Sức khỏe
    • Khoa học Vũ trụ
    • Khám phá thiên nhiên
  • Điện máy
    • Tủ lạnh
    • Tivi
    • Điều hòa
    • Máy giặt
  • Cuộc sống
    • Kỹ năng
    • Món ngon mỗi ngày
    • Làm đẹp
    • Nuôi dạy con
    • Chăm sóc Nhà cửa
    • Kinh nghiệm Du lịch
    • Halloween
    • Mẹo vặt
    • Giáng sinh - Noel
    • Tết 2023
    • Quà tặng
    • Giải trí
    • Là gì?
    • Nhà đẹp
    • TOP
    • Phong thủy
  • Video
    • Công nghệ
    • Cisco Lab
    • Microsoft Lab
    • Video Khoa học
  • Ô tô, Xe máy
    • Giấy phép lái xe
  • Làng Công nghệ
    • Tấn công mạng
    • Chuyện công nghệ
    • Công nghệ mới
    • Trí tuệ nhân tạo [AI]
    • Anh tài công nghệ
    • Bình luận công nghệ
    • Tổng hợp
  • Học CNTT
    • Quiz công nghệ
    • Microsoft Word 2016
    • Microsoft Word 2013
    • Microsoft Word 2007
    • Microsoft Excel 2019
    • Microsoft Excel 2016
    • Hàm Excel
    • Microsoft PowerPoint 2019
    • Microsoft PowerPoint 2016
    • Google Sheets - Trang tính
    • Photoshop CS6
    • Photoshop CS5
    • HTML
    • CSS và CSS3
    • Python
    • Học SQL
    • Lập trình C
    • Lập trình C++
    • Lập trình C#
    • Học HTTP
    • Bootstrap
    • SQL Server
    • JavaScript
    • Học PHP
    • jQuery
    • Học MongoDB
    • Unix/Linux
    • Học Git
    • NodeJS

Giới thiệu | Điều khoản | Bảo mật | Hướng dẫn | Ứng dụng | Liên hệ | Quảng cáo | Facebook | Youtube | DMCA

Giấy phép số 362/GP-BTTTT. Bộ Thông tin và Truyền thông cấp ngày 30/06/2016. Cơ quan chủ quản: CÔNG TY CỔ PHẦN MẠNG TRỰC TUYẾN META. Địa chỉ: 56 Duy Tân, Dịch Vọng Hậu, Cầu Giấy, Hà Nội. Điện thoại: 024 2242 6188. Email: info@meta.vn. Chịu trách nhiệm nội dung: Lê Ngọc Lam.

Bản quyền © 2003-2022 QuanTriMang.com. Giữ toàn quyền. Không được sao chép hoặc sử dụng hoặc phát hành lại bất kỳ nội dung nào thuộc QuanTriMang.com khi chưa được phép.

Chủ Đề