File trong Python


Hôm nay ta sẽ tìm hiểu cách đọc 1 file, cách ghi dữ liệu vào file trong Python nhé.

Ta có cấu trúc thư mục như sau:

| -- file.py
| -- text.txt

# text.txt
Hello Python 3.
It is easy to learn.

Đầu tiên ta sẽ đọc file "text.txt"

# file.py

f = open('text.txt')

file_data = f.read()
print(file_data)

# Hello Python 3.
# It is easy to learn.

hàm f.read() sẽ đọc toàn bộ file, nếu file không qua lớn ta dùng cách này. Nếu file có kích thước lớn thì ta sẽ dùng vòng lặp for để lặp qua từng dòng.

fdata = open('text.txt')

for line in fdata:
    print(line)

# Hello Python 3.
# 
# It is easy to learn.
#

Ta thấy rằng khi in ra thì có các dòng trống. Để remove các khoảng trắng ở cuối mỗi line ta dùng rstrip().

fdata = open('text.txt')

for line in fdata:
    line = line.rstrip()
    print(line)

# Hello Python 3.
# It is easy to learn.

Nếu ta muốn ghi vô file thì ta làm như sau.

fdata = open('text.txt', 'w')
fdata.write('It will override data in text.txt')
fdata.close()

Ta thấy để ghi vào file ta dùng 'w'. Thì file "text.txt" sẽ bị ghi đè dữ liệu mới. Khi kết thúc ghi ta dùng close() để đóng file lại.

# file.txt
It will override data in text.txt 

Nếu không muốn ghi đè mà chỉ muốn thêm vào thôi ta dùng 'a'.

fdata = open('text.txt', 'a')
fdata.write('\nIt will append at the end of file')
fdata.close()

# file.txt
It will override data in text.txt
It will append at the end of file

Ta dùng "\n" để xuống hàng trước khi thêm vào file.

Nếu ta muốn cho người dùng nhập vào tên file ta dùng input. Những có thể khi nhập vào tên file người dùng nhập sai, nên ta dùng try..catch để xử lý lỗi khi xảy ra. Xem ví dụ bên dưới nhé.

file_name = input("Enter file name: ")
try:
    f = open(file_name)

except:
    print("File not found")
    exit()

for line in f:
    line = line.rstrip()
    print(line)

Nếu ta gõ chính xác tên file.

Enter file name: text.txt
It will override data in text.txt
It will append at the end of file

Nếu ta gõ sai tên file.

Enter file name: text.ttt
File not found

Như vậy là ta đã học cách sử dụng file trong Python rồi nhé. ^_^