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:

Phạm vi số float của Python

Phạm vi số float của Python

Bài tập Python : Pandas trong Python

Bài tập Python : Pandas trong Python

Hướng dẫn kết nối Python PostgreSQL bằng Psycopg2

Hướng dẫn kết nối Python PostgreSQL bằng Psycopg2

Kết nối cơ sở dữ liệu MySQL Python

Kết nối cơ sở dữ liệu MySQL Python

Bài tập Python: Lập trình cơ sở dữ liệu trong Python

Bài tập Python: Lập trình cơ sở dữ liệu trong Python

Tạo số ngẫu nhiên trong một phạm vi bằng Python

Tạo số ngẫu nhiên trong một phạm vi bằng Python

Bài tập Python : Tạo dữ liệu ngẫu nhiên trong Python

Bài tập Python : Tạo dữ liệu ngẫu nhiên trong Python

Bài tập Python : Matplotlib trong Python

Bài tập Python : Matplotlib trong Python

Bài tập Python: NumPy trong Python

Bài tập Python: NumPy trong Python

Bài tập Python: JSON trong Python

Bài tập Python: JSON trong Python

Bài tập Python: Lập trình hướng đối tượng (OOP) trong Python

Bài tập Python: Lập trình hướng đối tượng (OOP) trong Python

TimeDelta trong Python

TimeDelta trong Python

Chuyển chuỗi Python thành DateTime trong Python

Chuyển chuỗi Python thành DateTime trong Python

Bài tập Python: DateTime trong Python

Bài tập Python: DateTime trong Python

Bài tập Python: Tuple trong Python

Bài tập Python: Tuple trong Python

Bài tập Python: Set trong Python

Bài tập Python: Set trong Python

Bài tập Python: Dictionary trong Python

Bài tập Python: Dictionary trong Python

Bài tập Python: List trong Python

Bài tập Python: List trong Python

Bài tập Python: Cấu trúc dữ liệu trong Python

Bài tập Python: Cấu trúc dữ liệu trong Python

Bài tập Python: Chuỗi trong Python

Bài tập Python: Chuỗi trong Python

Top