Hướng dẫn with open python - với con trăn mở

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đường dẫn tương đốiđườ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:

Class của file object trong pythonMở file trong python bằng câu lệnh withSự 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
Nếu file không tồn tại thì trả về lỗi
Tổng kếtCù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 openMở file bằng câu lệnh withVà 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 đốiopen ( 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 locale
locale.getpreferredencoding()


0 là chế độ mở file
import locale
locale.getpreferredencoding()


1 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 locale
locale.getpreferredencoding()


2 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 locale
locale.getpreferredencoding()


3.
Đườ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 locale
locale.getpreferredencoding()


4, khi đó đường dẫn tương đối của file
import locale
locale.getpreferredencoding()


5 ở trên sẽ là
import locale
locale.getpreferredencoding()


6.
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:

ModuleClass của object file
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
    

```python
with open('myfile.txt', 'r', encoding='UTF-8') as f:
data= f.read()
print(data)
3
    
```python
with open('myfile.txt', 'r', encoding='UTF-8') as f:
data= f.read()
print(data)
3

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    

```python
with open('myfile.txt', 'r', encoding='UTF-8') as f:
data= f.read()
print(data)
3    
```python
with open('myfile.txt', 'r', encoding='UTF-8') as f:
data= f.read()
print(data)
3

Trong đó

```python
with open('myfile.txt', 'r', encoding='UTF-8') as f:
data= f.read()
print(data)
5 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.

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

```python
with open('myfile.txt', 'r', encoding='UTF-8') as f:
data= f.read()
print(data)
7 đã đượ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.

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