BASIC TO ADVANCE

Bài 13: Input và Đọc ghi file trong Python

Ở các bài trước chúng ta đã được tìm hiểu về các kiểu dữ liệu, toán tử cũng như cách khai báo hàm,... trong Python rồi, nhưng ở các bài đó chủ yếu vẫn là làm việc với hệ thống, dữ liệu có sẵn. Mà chúng ta chưa biết cách nhận dữ liệu mà người dùng nhập vào trên comandline, và bài hôm nay chúng ta sẽ tìm hiều về nó.

1, Input.

Trong Python có cung cấp cho chúng ta hàm input để nhận dữ liệu từ người dùng nhập vào trong commandline. Sử dụng với cú pháp như sau:

input(something)

Trong đó, something là nội dung mà bạn muốn hiển thị trước khi người dùng nhập dữ liệu. Và giá trị mà hàm này trả về chính là giá trị mà người dùng nhập vào.

VD: Mình sẽ hỏi tuổi người dùng và in ra tuổi mà người dùng nhập vào.

print("Hello guy!")
age = input("How old are you? ")
print("age: " + age)

Và đây là ví dụ mình chạy:

input trong Python

2, Đọc ghi file.

File là một thứ rất cần thiết trong các dự án, ví dụ như chúng ta cần phải ghi log ra một file để sau này có thể kiểm soát được.... Và ngôn ngữ lập trình nào cũng hỗ trợ chúng ta làm việc với file.

Mở file.

Để mở file trong Python chúng ta sử dụng hàm open với cú pháp như sau:

open(filePath, mode, buffer)

Trong đó:

  • filePath là đường dẫn đến địa chỉ của file.
  • mode là thông số thiết lập chế độ chúng ta mở file được cấp những quyền gì? Mặc địn mode sẽ bằng r (xem các mode ở dưới).
  • buffer là thông số đệm cho file mặc định thì nó sẽ là 0.

Các chế độ mode.

Mode Chú thích
r Chế độ chỉ được phép đọc.
rb Chế độ chỉ được phép đọc nhưng cho định dạn nhị phân.
r+ Chế độ này cho phép đọc và ghi file, con trỏ nó sẽ nằm ở đầu file.
rb+ Chế độ này cho phép đọc và ghi file ở dạng nhị phân, con trỏ sẽ nằm ở đầu file.
w Chế độ ghi file, nếu như file không tồn tại thì nó sẽ tạo mới file và ghi nội dung, còn nếu như file đã tồn tại nó sẽ ghi đè nội dung lên file cũ.
wb Tương tự chế độ w nhưng đối với nhị phân.
w+ Mở file trong chế độ đọc và ghi. còn lại như w.
wb+ Giống chế độ w+ nhưng đối với nhị phân
a Mở file trong chế độ ghi tiếp. Nếu file đã tồn tại rồi thì nó sẽ ghi tiếp nội dung, và nếu như file chưa tồn tại thì nó sẽ tạo một file mới và ghi nội dung vào đó.
ab Tương tự a nhưng đối với nhị phân.
a+ Mở file trong chế độ đọc và ghi tiếp nội dung, còn lại cơ chế giống chế độ a.
ab+ Tương tự chế độ a+ nhưng đối với nhị phân.

VD: Mình sẽ đọc file readme.md có cùng cấp với file index.py của mình.

|-- readme.md
|-- index.py

code file index.py

# index.py
open('readme.md')

Lúc này hàm open sẽ trả về một object chứa các các phươn thức để tác động đến file.

Đóng file.

Để đóng một file đang được mở, thì chúng ta sử dụng phương thức close() với cú pháp như sau:

fileObject.close()

Trong đó, fileObject là đối tượng mà chúng ta thu được khi sử dụng hàm open().

Để đảm bảo quy chế đóng mở và giải phóng bộ nhớ cho chương trình thì các bạn phải luôn nhớ đống file khi kết thúc phiên làm việc.

Đọc file.

Sau khi đã mở được file ra rồi, để đọc được file thì chúng ta sử dụng phương thức read với cú pháp:

fileObject.read(length);

Trong đó:

  • fileObject là đối tượng mà chúng ta thu được khi sử dụng hàm open().
  • length là dung lượng của dữ liệu mà chúng ta muốn đọc, nếu để trống tham số này thì nó sẽ đọc hết file hoặc nếu file lớn quá thì nó sẽ đọc đến khi giới hạn của bộ nhớ cho phép.

VD: Mình sẽ đọc và xuất ra dữ liệu đọc được trong file readme ở trên.

# mo file
file = open('readme.md')
# doc file
data = file.read();
# dong file
file.close()
# in du lieu doc duoc
print(data)

Ghi file.

Để ghi được file thì bạn phải chắc chắn là đang mở file ở các chế độ cho phép ghi. Và sử dụng phương thức write với cú pháp sau:

fileObject.write(data)

Trong đó:

  • fileObject là đối tượng mà chúng ta thu được khi sử dụng hàm open().
  • data là dữ liệu mà chúng ta muốn ghi vào trong file.

VD:  Mình sẽ ghi dữ liệu vào file readme.md

# mo file o che do ghi
file = open('readme.md','w')
# ghi file
file.write('Vu Thanh Tai - toidicode.com')
# dong file
file.close()

Các thuộc tính trong file.

Nếu như bạn cần biết thêm các thông số của file hiện tại thì bạn có thể tham khảo thêm các thuộc tính trong object file mà Python đã cung cấp sẵn cho chúng ta. Các thuộc tính như sau:

Trong các trường hợp dưới đây: giả sử file là kết quả thu được từ hàm open().

Thuộc tính Chú thích
file.name Trả về tên của file đang được mở.
file.mode Trả về chế độ mode của file đang được mở.
file.closed Trả về true nếu file đã được đóng, và false nếu file chưa đóng.

VD: Mình sẽ in ra thông số của file readme.md ở trên.

file = open('readme.md','w')
print( file.name )
# readme
print( file.mode )
# w
print( file.closed )
# False
file.close()

3, Lời kết.

Phần này chúng ta tạm dừng ở đây thôi nhé, còn các phần như tương tác với file và thư mục trong Python thì mình sẽ trình bài ở một bài khác.

Đăng ký nhận tin.

Chúng tôi chỉ gửi tối đa 2 lần trên 1 tháng. Tuyên bố không spam mail!

Vũ Thanh Tài

About author
The best way to learn is to share
Xem tất cả bài đăng

8 Comments

em chào Anh.

print("age: " + age) # dấu cộng có nghĩa là gì ạ ? ( em thường thấy ở đó dấu phẩy, %, ... Em thử thay -, *, / nhưng đều báo lỗi. Không biết dấu cộng có vai trò gì ạ! Mong tác giả chỉ rõ giúp em. em cảm ơn

cương

2 năm trước

là để nối chuỗi đó bạn

giống như trong java đó 

Toan

2 năm trước

em chào Anh.

em thấy với một file txt tiếng việt có dấu thực hành trên python 3 thì phải cần có cú pháp sau để đọc ạ:

open(filePath, mode, buffer) # em không hiểu encoding = 'utf-8' thuộc thành phần nào trong này và nó được sử dụng khi nào, cho những trường hợp nào. khi dùng chế độ 'w' thì có cần đến nó không ạ hay còn cách khác. mong anh giúp em trả lời nhứng thắc mắc này. em cảm ơn nhiều

f = open('D:\\hi.txt', 'r', encoding='utf-8')

cương

2 năm trước

ad ơi từ khóa with trong python dùng để làm j z ạ???

lmq

1 năm trước

Anh ơi cho em hỏi: nếu mình muốn dữ liệu in ra bên tệp file là số thì mình phải làm cách gì vậy anh. Vd 

5 6 7

2 3 8

1 5 0 2 

Kiểu như vậy á anh

Sam Frodo

1 năm trước

print("Hello guy!")

age = input("How old are you? ")

print("age: " + age)

Hình như câu lệnh này vẫn thiếu thì phải add ơi, không thấy số 22 xuất hiện ở đâu cả

White_King

3 tháng trước

sô 22 là input mà, được nhập từ bàn phím

Lann

3 tháng trước

Thank you very much

Phương Vy

2 tháng trước

Bình luận

Captcha