Nội dung chính
- Mở file trong python bằng hàm open[]
- Hàm open trong Python
- Đường dẫn file trong python sử dụng khi mở file
- Các mode để mở file trong C
- Mã ký tự sử dụng khi mở file
- Class của file object trong python
- Mở file trong python bằng câu lệnh with
- Sự khác biệt giữa mở file bằng hàm open và bằng câu lệnh with
- Xử lý lỗi khi mở file trong Python
- Đóng file trong python bằng phương thức close[]
- Chương trình mở file và đóng file trong Python
- Tổng kết
Cùng tìm hiểu về cách mở file và đóng file trong Python. Bạn sẽ học được cách mở một file trong Python bằng hàm open và câu lệnh with, cũng như cách đóng file trong Python bằng phương thức close[] sau bài học này.
Chúng ta có 2 phương pháp để mở file trong Python như sau:
- Mở file bằng hàm open
- Mở file bằng câu lệnh with
Và chúng ta dùng phương thức close[] trong Python để đóng một file, sau khi đã hoàn thành các xử lý với nó.
Mở file trong python bằng hàm open[]
Hàm open trong Python
Đường dẫn file trong python sử dụng khi mở file
Các mode để mở file trong C
Mã ký tự sử dụng khi mở file
Class của file object trong python
Mở file trong python bằng câu lệnh with
Sự khác biệt giữa mở file bằng hàm open và bằng câu lệnh with
- Xử lý lỗi khi mở file trong Python
- Đóng file trong python bằng phương thức close[]
- Chương trình mở file và đóng file trong Python
Tổng kếtfile object [đối tượng để xử lý file ] với mode được chỉ định sẽ được tạo ra. Nếu mở file không thành công, lỗi OSError sẽ được trả về.
Cùng tìm hiểu về cách mở file và đóng file trong Python. Bạn sẽ học được cách mở một file trong Python bằng hàm open và câu lệnh with, cũng như cách đóng file trong Python bằng phương thức close[] sau bài học này.
f0 = open['myfile.txt']
f1 = open['myfile.txt', 'r']
f2 = open['myfile.txt', 'w+']
f3 = open['myfile.txt', 'r', encoding='UTF-8']
f4 = open['myfile.txt', 'rb']
Đường dẫn file trong python sử dụng khi mở file
Các mode để mở file trong Cđường dẫn file trong python là đường dẫn tương đối và đường dẫn tuyệt đối.
Mã ký tự sử dụng khi mở file
Class của file object trong python
Mở file trong python bằng câu lệnh with
Các mode để mở file trong C
Mã ký tự sử dụng khi mở filemode-chế độ mở file. Chúng ta có thể sử dụng một trong các mode trong bảng mode xử lý file python dưới đây:
Xử lý lỗi khi mở file trong Python | Đóng file trong python bằng phương thức close[] | Chương trình mở file và đóng file trong Python Nếu file không tồn tại thì trả về lỗi |
Tổng kết | Cùng tìm hiểu về cách mở file và đóng file trong Python. Bạn sẽ học được cách mở một file trong Python bằng hàm open và câu lệnh with, cũng như cách đóng file trong Python bằng phương thức close[] sau bài học này. | Chúng ta có 2 phương pháp để mở file trong Python như sau: Nếu file không tồn tại thì tạo file mới |
Mở file bằng hàm open | Mở file bằng câu lệnh with | Và chúng ta dùng phương thức close[] trong Python để đóng một file, sau khi đã hoàn thành các xử lý với nó. Nếu file không tồn tại thì tạo file mới |
Hàm open[] là một hàm cài sẵn có tác dụng mở file trong python. Đây là một hàm không thể thiếu khi chúng ta muốn thao tác xử lý với file trong Python. | Chúng ta sử dụng hàm open[] với cú pháp tổng quát sau đây: | open [ filepath, mode=’r’, buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=Non ] |
Tuy nhiên thông thường chúng ta sẽ lược bỏ phần lớn đối số và dùng hàm open[] với cú pháp rút gọn sau đây: | open [ filepath, mode, encoding=None] | Trong đó: Nếu file không tồn tại thì trả về lỗi |
filepath là đường dẫn của file cần mở. Đường dẫn này có thể là đường dẫn tương đối hoặc đường dẫn tuyệt đối | open [ filepath, mode, encoding=None] | Trong đó: Nếu file không tồn tại thì tạo file mới |
filepath là đường dẫn của file cần mở. Đường dẫn này có thể là đường dẫn tương đối hoặc đường dẫn tuyệt đối | import locale0 là chế độ mở file | import locale1 là mã ký tự sử dụng khi mở file. Nếu file không tồn tại thì tạo file mới |
Nếu file mở thành công, một file object [đối tượng để xử lý file ] với mode được chỉ định sẽ được tạo ra. Nếu mở file không thành công, lỗi OSError sẽ được trả về. | Ví dụ cụ thể, chúng ta có thể mở file import locale2 bằng nhiều cách rút gọn như sau: | Khi mở một file, chúng ta cần chỉ định đường dẫn file đó. Có hai loại đường dẫn file trong python là đường dẫn tương đối và đường dẫn tuyệt đối. |
Đường dẫn tuyệt đối là đường dẫn cố định của file đó được xác định trên hệ điều hành. Ví dụ như import locale3. | Đường dẫn tương đối là đường dẫn thể hiện vị trí của file đó so với vị trí hiện tại của chương trình. Ví dụ hiện tại bạn đang chạy chương trình ở thư mục import locale4, khi đó đường dẫn tương đối của file import locale5 ở trên sẽ là import locale6. | Khi mở một file trong python, bạn có thể sử dụng cả hai loại đường dẫn ở trên để chỉ định vị trí của file đó trong thư mục máy tính của bạn. |
Khi mở file, chúng ta cần chỉ định mode-chế độ mở file. Chúng ta có thể sử dụng một trong các mode trong bảng mode xử lý file python dưới đây:
Mã ký tự sử dụng khi mở file
Modeencoding được sử dụng để chỉ định mã ký tự sử dụng khi mở file trong python. Lưu ý là chỉ định này chỉ dùng được khi chúng ta đọc file txt trong python mà thôi. Bảng dưới đây là các bảng mã ký tự mà bạn có thể chỉ định khi mở file txt trong python.
Xử lý
cp932
euc_jp
shift_jis
utf-8 [utf_8]
Chức năngendcoding thì python sẽ sử dụng mã ký tự đang được sử dụng trên máy tính của bạn để mở file trong python. Bạn có thể kiểm tra mã ký tự đang được sử dụng trên máy tính của mình bằng cách chạy các dòng code sau đây trên flatform chạy python của mình, ví dụ như Anaconda Prompt:
import locale
locale.getpreferredencoding[]
r
Class của file object trong python
Mở để đọc file object tương ứng với file đó sẽ được tạo ra. Class của file object này sẽ tùy thuộc vào mode mở file mà bạn đã sử dụng, giống như bảng đối ứng mode và file object sau đây:
r | io.TextIOWrapper |
r+ | io.TextIOWrapper |
r+ | rb |
io.BufferedReader | r+b |
io.BufferedRandom | io.TextIOWrapper |
r+ | io.TextIOWrapper |
r+ | rb |
io.BufferedReader | r+b |
io.BufferedRandom | io.TextIOWrapper |
r+ | io.TextIOWrapper |
r+ | rb |
io.BufferedReader | r+b |
io.BufferedRandom | io.TextIOWrapper |
r+ | io.TextIOWrapper |
r+ | rb |
io.BufferedReader | r+b |
io.BufferedRandom Chế độ văn bản sẽ là io.TextIOWrapper , trong Chế độ nhị phân sẽ là io.BufferedReader, trong mode viết là io.BufferedReader, và trong mode đọc viết sẽ là io.BufferedRandom.
Tùy thuộc vào class của object file được tạo ra mà chúng ta có thể sử dụng các thuộc tính hay phương thức trong class đó khác nhau.
w
w+
wb
lệnh xử lý 1
lệnh xử lý 2
```python3
with open['myfile.txt', 'r', encoding='UTF-8'] as f:
data= f.read[]
print[data]
```python3
with open['myfile.txt', 'r', encoding='UTF-8'] as f:
data= f.read[]
print[data]
io.BufferedWriter f là object file trả về nếu file được mở thành công.
Sau khi mở file, bạn có thể ghi các câu lệnh xử lý file này ở trong khối mà with tạo ra, với các dòng lệnh được viết thụt lùi.
w+b
```python
with open['myfile.txt', 'r', encoding='UTF-8'] as f:
data= f.read[]
print[data]
a io.TextIOWrapper, như ví dụ sau:
path= "src/test.txt"
with open[path] as f:
print[type[f]]
a+
ab mở file trong C. Việc lựa chọn phương pháp nào thì tuỳ theo sở thích của mỗi lập trình viên, tuy nhiên thì hai phương pháp này cũng có điểm khác biệt, đó chính là trong cách đóng lại file sau khi mở.
a+b
x
x+
xb
x+b
Từ bảng trên chúng ta có thể tổng quát, class của object file trong Chế độ văn bản sẽ là io.TextIOWrapper , trong Chế độ nhị phân sẽ là io.BufferedReader, trong mode viết là io.BufferedReader, và trong mode đọc viết sẽ là io.BufferedRandom.Tùy thuộc vào class của object file được tạo ra mà chúng ta có thể sử dụng các thuộc tính hay phương thức trong class đó khác nhau.
import sys
try:
outfile=open["sample.txt",'a+']
except PermissionError :
print["\n Error : Cant open file"]
input[">>"]
sys.exit[]
Mở file trong python bằng câu lệnh with
Ngoài hàm open thì bạn cũng có thể mở file trong python bằng cách sử dụng câu lệnh with kết hợp hàm open với cú pháp sau đây:
with open[filepath, mode, encoding=None] as f: lệnh xử lý 1 lệnh xử lý 2
```python3
with open['myfile.txt', 'r', encoding='UTF-8'] as f:
data= f.read[]
print[data]
```python3
with open['myfile.txt', 'r', encoding='UTF-8'] as f:
data= f.read[]
print[data]
Trong đó
```python5 là hàm open[] mà Kiyoshi đã giới thiệu ở trên, và f là object file trả về nếu file được mở thành công.Sau khi mở file, bạn có thể ghi các câu lệnh xử lý file này ở trong khối mà with tạo ra, với các dòng lệnh được viết thụt lùi.
with open['myfile.txt', 'r', encoding='UTF-8'] as f:
data= f.read[]
print[data]
Ví dụ:
f.close[]
Về class của object file khi được mở bởi câu lệnh with, thì bạn lưu ý là class này luôn là io.TextIOWrapper, như ví dụ sau:
Sự khác biệt giữa mở file bằng hàm open và bằng câu lệnh with
f = open['myfile.txt', 'r']
print[type[f]]
f.close[]
Chúng ta đều có thể sử dụng hàm open lẫn câu lệnh with để mở file trong C. Việc lựa chọn phương pháp nào thì tuỳ theo sở thích của mỗi lập trình viên, tuy nhiên thì hai phương pháp này cũng có điểm khác biệt, đó chính là trong cách đóng lại file sau khi mở.
Với file được mở bằng hàm open, chúng ta phải đóng lại file đó sau khi đã mở và thao tác xong với file. Tuy nhiên thì đối với file được mở bằng câu lệnh with, chúng ta không cần phải đóng lại file sau khi mở, vì câu lệnh with vốn tự động đóng lại file cho chúng ta rồi.
with open[path] as f:
print[type[f]]
Xử lý lỗi khi mở file trong Python
Chúng ta có thể sử dụng một trong hai phương pháp mà Kiyoshi đã giới thiệu ở trên để mở một file trong Python, nhưng trong quá trình mở có thể gặp một số lỗi nào đó, dẫn dến việc không phải lúc nào bạn cũng có thể mở file đó thành công.
Sẽ tất nguy hiểm khi thực hiện quá trình thao tác với một tập tin mà không thể mở được, do đó thay vì để chương trình tiếp tục chạy như cũ thì chúng ta cần phải thiết kế các xử lý để chương trình tự xử lý lỗi, và chạy chương trình một cách chính xác.
path= "src/test.txt"
f = open[path]
print[type[f]]
data = f.read[]
print[data]
f.close[]
Nếu không thể mở file chính xác, lỗi OSError sẽ bị trả về. Ứng bạn có thể sử dụng điều này, chúng ta có thể phán đoán khi nào thì đã mở file thất bại, và xử lý lỗi khi cần.
path= "src/test.txt"
with open[path] as f:
data = f.read[]
print[type[f]]
print[data]
Trong Python, để xử lý lỗi chúng ta hay sử dụng tới lệnh try…catch. Và ứng dụng lệnh này, chúng ta có thể viết chương trình xử lý lỗi khi mở file trong Python như sau:file object với tên
```python7 đã được tạo ra. Bạn có thể kiểm tra định dạng file object này thuộc class io.TextIOWrapper bằng hàm type. Bạn cũng có thể đọc nội dung của file object rồi gán vào biến và thao tác với biến đó như ví dụ trên.
with open['myfile.txt', 'r', encoding='UTF-8'] as f:
data= f.read[]
print[data]
Tổng kết
Trên đây Kiyoshi đã hướng dẫn bạn về cách mở file và đóng file trong python rồi. Để nắm rõ nội dung bài học hơn, bạn hãy thực hành viết lại các ví dụ của ngày hôm nay nhé.mở file và đóng file trong python rồi. Để nắm rõ nội dung bài học hơn, bạn hãy thực hành viết lại các ví dụ của ngày hôm nay nhé.
Và hãy cùng tìm hiểu các kiến thức về Python trong các bài viết sau.
Hãy chia sẻ và cùng lan tỏa kiến thức lập trình Nhật Bản tại Việt Nam!
HOME>> python cơ bản - lập trình python cho người mới bắt đầu>>16. xử lý file trong python>> python cơ bản - lập trình python cho người mới bắt đầu>>16. xử lý file trong python
Bài sauĐồng hồ bấm giờ python
Bài tiếpĐọc file trong python