INTRODUCTION
FLOW CONTROL
FUNCTIONS
DATATYPES
OBJECT & 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:

Tìm hiểu Event loop trong Python

Tìm hiểu Event loop trong Python

Cách sử dụng ProcessPoolExecutor trong Python

Cách sử dụng ProcessPoolExecutor trong Python

Sử dụng đa xử lý trong Python

Sử dụng đa xử lý trong Python

Cách sử dụng Thread-safe Queue trong Python

Cách sử dụng Thread-safe Queue trong Python

Sử dụng Semaphore trong Python

Sử dụng Semaphore trong Python

Cách dừng Luồng trong Python

Cách dừng Luồng trong Python

Cách sử dụng Semaphore trong Python

Cách sử dụng Semaphore trong Python

Đối tượng Threading Event trong Python

Đối tượng Threading Event trong Python

Tìm hiểu về điều kiện race của threading Lock trong Python

Tìm hiểu về điều kiện race của threading Lock trong Python

Sử dụng lớp ThreadPoolExecutor trong Python

Sử dụng lớp ThreadPoolExecutor trong Python

Các luồng Daemon trong Python

Các luồng Daemon trong Python

Tìm hiểu về Multithreading trong Python

Tìm hiểu về Multithreading trong Python

Cách trả về giá trị từ một Thread trong Python

Cách trả về giá trị từ một Thread trong Python

Cách mở rộng Class Thread trong Python

Cách mở rộng Class Thread trong Python

Cách sử dụng module threading trong Python

Cách sử dụng module threading trong Python

Sự khác biệt giữa các Processes and Threads

Sự khác biệt giữa các Processes and Threads

Tài liệu tham khảo nhanh về Regex trong Python

Tài liệu tham khảo nhanh về Regex trong Python

Hàm Flags của Regex trong Python

Hàm Flags của Regex trong Python

Hàm split() của Regex trong Python

Hàm split() của Regex trong Python

Hàm finditer() của Regex trong Python

Hàm finditer() của Regex trong Python

Top