INTRODUCTION
FLOW CONTROL
FUNCTIONS
DATATYPES
OBJECT & CLASS
Bài tập Python: Lập trình hướng đối tượng (OOP) trong Python Lập trình hướng đối tượng trong Python Class Variables trong Python Tìm hiểu về Methods trong Python Cách sử dụng phương thức __init__() trong Python Các biến Instance trong Python Tìm hiểu về Class Attributes trong Python Hàm Static Methods trong Python Phương thức __str__ trong Python Phương thức __repr__ trong Python Phương thức eq trong Python Tìm hiểu phương thức __hash__ trong Python Phương thức __bool__ trong Python Phương thức del trong Python Tìm hiểu về lớp Property trong Python Tìm hiểu về nạp chồng toán tử trong Python Trình Decorator Property trong Python Thuộc tính chỉ đọc trong Python Thuộc tính Delete trong Python Sử dụng super() trong Python Sử dụng __slots__ trong Python Cách sử dụng Protocol trong Python Sử dụng Enum aliases và @enum.unique trong Python Tùy chỉnh và mở rộng lớp Enum trong Python Cách sử dụng hàm Auto() của Python Single Responsibility Principle trong Python Nguyên tắc Đóng-Mở trong Python Nguyên tắc thay thế Liskov - LSP trong Python Interface Segregation Principle - ISP trong Python. Nguyên tắc đảo ngược sự phụ thuộc trong Python Đa kế thừa trong Python Tìm hiểu về các lớp mixin trong Python Mô tả Descriptors trong Python Phân biệt Data Descriptor và Non-data Descriptor trong Python Phương thức __new__ trong Python Tìm hiểu về Class Type trong Python Lớp Metaclass trong Python Ví dụ sử dụng metaclass trong Python Tìm hiểu về decorator dataclass trong Python Tìm hiểu về các ngoại lệ trong Python Ngoại lệ Raise trong Python Sử dụng câu lệnh raise from trong Python Ngoại lệ tùy chỉnh trong Python Module trong Python Package trong Python Class trong Python Hàm khởi tạo trong Python Kế thừa trong Python Đa kế thừa trong Python Setter và Getter trong Python Override trong Python Interface trong Python Bài tập Python: Module và Class
ADVANCED TOPICS
BỔ SUNG
PYTHON CĂN BẢN
CÁC CHỦ ĐỀ
BÀI MỚI NHẤT
MỚI CẬP NHẬT

Thông báo: Download 4 khóa học Python từ cơ bản đến nâng cao tại đây.

Xử lý file và thư mục trong Python

Trong bài viết này ta sẽ tìm hiểu về các hoạt động với file trong Python như: mở file, đọc file, ghi file, đóng file, ... và các phương thức xử lý file khác.

test php

banquyen png
Bài viết này được đăng tại freetuts.net, không được copy dưới mọi hình thức.

1. Sơ lược về xử lý file trong Python

File là một tệp được người dùng máy tính sử dụng để lưu trữ dữ liệu của họ, nó sẽ được lưu trữ trên ổ đĩa vĩnh viễn trừ khi ổ đĩa bị hỏng hoặc bạn xóa nó.

Khi làm việc với file thì chúng ta sẽ có những hành động chính như sau:

  • Mở, tạo file
  • Thay đổi dữ liệu của file
  • Xóa file
  • Di chuyển file
  • Copy file
  • ...

Đối với một phiên làm việc với file trong Python thì sẽ có ba bước chính như sau:

Bài viết này được đăng tại [free tuts .net]

  • Mở file, nếu file cần mở không tồn tại thì tạo file mới.
  • Thay đổi dữ liệu của file
  • Đóng file

Bây giờ chúng ta sẽ tìm hiểu chi tiết hơn từng thao tác nhé.

2. Mở file với open() trong Python?

Python cung cấp cho chúng ta một hàm có tên là open(), hàm này có cú pháp như sau:

f = open("location_file", "mode")

Trong đó location_file là đường dẫn trỏ đến file cần mở, còn mode là chế độ mở file. Bảng dưới đây là danh sách các chế độ mở file thường gặp.

Python File Modes
Mode Description
'r' Mở file ở chế độ đọc (mặc định)
'w' Mở file ở chế độ ghi, tạo file mới nếu file không tồn tại, làm sạch file nếu nó đã tồn tại
'x' Mở file ở chế độ tạo mới, nếu file đã tồn tại thì sẽ bị báo lỗi
'a' Mở file ở chế độ ghi tiếp theo ở phân cuối của file, tạo mới nếu nó không tồn tại
't' Mở file ở chế độ dữ liệu kiểu text (mặc định)
'b' Mở file ở chế độ dữ liệu kiểu nhị phần binary
'+' Mở file ở cả hai chế độ đọc và ghi
Ví dụ
f = open("test.txt")      # equivalent to 'r' or 'rt'
f = open("test.txt",'w')  # write in text mode
f = open("img.bmp",'r+b') # read and write in binary mode

Như vậy bạn có thể sử dụng một hoặc nhiều chế độ trong cùng một phiên mở file.

Không giống như các ngôn ngữ khác, ký tự 'a' không phải là số 97 trong bảng mã ASCII (hoặc mã hóa tương đương khác), nó sẽ phụ thuộc vào nền tảng mà bạn đang sư dụng. Trong Window thì là 'cp1252' nhưng trong Linux thì 'utf-8', vì vậy, chúng ta không nên sử dụng mã hóa mặc định mà chỉ rõ trong lúc mở file.

Ví dụ
f = open("test.txt",mode = 'r',encoding = 'utf-8')

3. Đóng kế nối với close() trong Python

Khi ta mở một file và xử lý xong thì nên đóng file đó lại để đảm bảo tính an toàn, và để làm điều này thì ta sử dụng hàm close().

Ví dụ
f = open("test.txt",encoding = 'utf-8')
# perform file operations
f.close(

Phương thức này sẽ không an toàn trong một số trường hợp, nó sẽ không tự đóng file nếu trong quá trình mở và ghi bị lỗi. Để khắc phục vấn đề này thì ta sử dụng từ khóa with, nó sẽ đảm bảo răng file sẽ luôn được đóng khi lệnh kết thúc.

Ví dụ
with open("test.txt",encoding = 'utf-8') as f:
   # perform file operations

Và ta cũng không cần phải gọi hàm close() vì nó tự động thực hiện ngầm.

4. Ghi file trong Python

Để ghi vào một file bằng Python thì bắt buộc chúng ta cần mở nó ở chế độ ghi 'w', nối thêm 'a' hoặc tạo mới 'x'. Chúng ta cần cẩn thận với chế độ 'w' vì nó sẽ ghi đè lên tệp nếu nó đã tồn tại, tất cả dữ liệu trước đó bị xóa.

Ví dụ
with open("test.txt",'w',encoding = 'utf-8') as f:
   f.write("my first file\n")
   f.write("This file\n\n")
   f.write("contains three lines\n")

Chương trình này sẽ tạo một file tên là test.txt nếu nó chưa tồn tại, còn nếu đã tồn tại thì dữ liệu trước đây sẽ bị xóa hết.

5. Đọc dữ liệu của file trong Python

Để đọc dữ liệu của file thì chúng ta phải mở nó ở chế độ reading (r), sau đó có thể sử dụng hàm read(size) để để đọc dữ liệu của file, nếu bạn không truyền size thì nó sẽ đọc từ đầu đến cuối file.

Ví dụ
>>> f = open("test.txt",'r',encoding = 'utf-8')
>>> f.read(4)    # read the first 4 data
'This'

>>> f.read(4)    # read the next 4 data
' is '

>>> f.read()     # read in the rest till end of file
'my first file\nThis file\ncontains three lines\n'

>>> f.read()  # further reading returns empty sting
''

Làm thế nào để Python biết được là xuống dòng? Nó sẽ nhận biết thông qua ký tự thoát \n.

Để lấy số dòng hiện tại đang đọc thì ta dùng hàm tell(), và dùng hàm seek() để di chuyển con trỏ đọc tới một vị trí nào đó.

Ví dụ
>>> f.tell()    # get the current file position
56

>>> f.seek(0)   # bring file cursor to initial position
0

>>> print(f.read())  # read the entire file
This is my first file
This file
contains three lines

Ngoài ra để đọc từng dòng thì ta có thể kết hơp với vòng lặp như ví dụ dưới đây.

>>> for line in f:
...     print(line, end = '')
...
This is my first file
This file
contains three lines

Mỗi lần lặp chính là một dòng dữ liệu của file.

Để đọc một dòng duy nhất thì ta dùng hàm readline(), hàm này sẽ đọc dòng mới và sẽ ngưng khi kết thúc dòng đó.

Ví dụ
>>> f.readline()
'This is my first file\n'

>>> f.readline()
'This file\n'

>>> f.readline()
'contains three lines\n'

>>> f.readline()
''

Để đọc tất cả các dòng và trả về dạng list thì ta dùng hàm readlines().

>>> f.readlines()
['This is my first file\n', 'This file\n', 'contains three lines\n']

6. Lời kết

Trên là những thao tác cơ bản xử lý file trong Python, những thao tác này rất đơn giản nhưng lại rất hữu ích, hy vọng bài viết sẽ giúp được bạn trong quá trình học Python.

Cùng chuyên mục:

Hướng dẫn xây dựng Command-Line Interface (CLI) bằng Quo trong Python

Hướng dẫn xây dựng Command-Line Interface (CLI) bằng Quo trong Python

Hướng dẫn toàn diện về module datetime trong Python

Hướng dẫn toàn diện về module datetime trong Python

Cách truy cập và thiết lập biến môi trường trong Python

Cách truy cập và thiết lập biến môi trường trong Python

Lớp dữ liệu (Data Classes) trong Python với decorator @dataclass

Lớp dữ liệu (Data Classes) trong Python với decorator @dataclass

Từ khóa yield trong Python

Từ khóa yield trong Python

Sự khác biệt giữa sort() và sorted() trong Python

Sự khác biệt giữa sort() và sorted() trong Python

Sử dụng Poetry để quản lý dependencies trong Python

Sử dụng Poetry để quản lý dependencies trong Python

Định dạng chuỗi Strings trong Python

Định dạng chuỗi Strings trong Python

Một tác vụ phổ biến khi làm việc với danh sách trong Python

Một tác vụ phổ biến khi làm việc với danh sách trong Python

Làm việc với các biến môi trường trong Python

Làm việc với các biến môi trường trong Python

Sự khác biệt giữa set() và frozenset() trong Python

Sự khác biệt giữa set() và frozenset() trong Python

Sự khác biệt giữa iterator và iterable trong Python

Sự khác biệt giữa iterator và iterable trong Python

Cách làm việc với file tarball/tar trong Python

Cách làm việc với file tarball/tar trong Python

Chuyển đổi kiểu dữ liệu trong Python

Chuyển đổi kiểu dữ liệu trong Python

Sự khác biệt giữa toán tử == và is trong Python

Sự khác biệt giữa toán tử == và is trong Python

Làm việc với file ZIP trong Python

Làm việc với file ZIP trong Python

Cách sử dụng ThreadPoolExecutor trong Python

Cách sử dụng ThreadPoolExecutor trong Python

Sự khác biệt giữa byte objects và string trong Python

Sự khác biệt giữa byte objects và string trong Python

Xử lý độ chính xác các hàm floor, ceil, round, trunc, format  trong Python

Xử lý độ chính xác các hàm floor, ceil, round, trunc, format trong Python

Cách lặp qua nhiều list với hàm zip() trong Python

Cách lặp qua nhiều list với hàm zip() trong Python

Top