Close() trong python là gì?

Đối với bất kỳ ai làm việc với Python, việc tương tác với các tệp sẽ không thể tránh khỏi. Phương pháp đơn giản nhất để mở và đóng tệp dưới đây

file = open('example_file.txt')  # open the example file
file.close()                     # close it

Learn Data Science with

Một trong những lỗi phổ biến nhất mà mọi người mắc phải khi sử dụng tệp trong Python là không đóng chúng sau đó. Trong bài học này, chúng ta sẽ xem xét một số vấn đề gây ra khi để tệp mở và cách chúng ta có thể tránh những vấn đề này bằng cách sử dụng phương pháp hay nhất đã được thiết lập

Tại sao phải đóng tệp?

Không đóng tệp sau khi tương tác không chỉ gây lãng phí tài nguyên chương trình mà còn có thể ngăn các tương tác tệp khác và có thể dẫn đến sự không nhất quán khi chạy tập lệnh của bạn trên các phiên bản Python khác nhau. Để các tệp mở cũng được nhiều người coi là một thói quen xấu và tốt nhất là bạn nên sớm hình thành thói quen tốt

ví dụ 1. Không đóng chính xác

Hãy tưởng tượng bạn có một tệp, được gọi là tệp_1. txt, hãy lưu trữ trong cùng thư mục với tập lệnh Python của bạn. Tệp này chứa văn bản "Đây là tệp văn bản 1"

Bạn muốn đọc tệp bằng Python, hiển thị văn bản và nối thêm một dòng mới để đánh dấu rằng bạn đã đọc tệp văn bản. Quá trình này được hiển thị (không chính xác) bên dưới

file = open('file_1.txt','r')        # file is opened in read (r) mode
print(file.read())

file = open('file_1.txt', 'a')       # file is opened in append (a) mode
file.write(' and we have read it.')

file = open('file_1.txt','r')        # file is opened in read (r) mode
print(file.read())

file.close()

Learn Data Science with

Ngoài

This is file 1 text
This is file 1 text and we have read it.

Learn Data Science with

Các tập tin đã được đóng một cách chính xác, phải không?

Trong ví dụ này, chúng tôi chỉ đóng tệp sau lần mở gần đây nhất. Đối với một số phiên bản Python, mã được sử dụng có thể không ghi chính xác văn bản được nối vì tệp chưa được đóng sau khi hoàn thành thao tác. Để chứng minh điều này, hãy quan sát điều gì sẽ xảy ra nếu chúng ta cố gắng đóng từng tệp riêng lẻ ở cuối như một giải pháp

f1 = open('file_1.txt','r')
print(f1.read())

f2 = open('file_1.txt', 'a')
f2.write(' and we have read it.')

f3 = open('file_1.txt','r')
print(f3.read())

f1.close()
f2.close()
f3.close()

Learn Data Science with

Ngoài

This is file 1 text
This is file 1 text

Learn Data Science with

Chúng ta có thể thấy rằng việc thêm vào tệp từ

file = open('file_1.txt','r')        # file is opened in read (r) mode
print(file.read())

file = open('file_1.txt', 'a')       # file is opened in append (a) mode
file.write(' and we have read it.')

file = open('file_1.txt','r')        # file is opened in read (r) mode
print(file.read())

file.close()

Learn Data Science with

2 không được phản ánh trong
file = open('file_1.txt','r')        # file is opened in read (r) mode
print(file.read())

file = open('file_1.txt', 'a')       # file is opened in append (a) mode
file.write(' and we have read it.')

file = open('file_1.txt','r')        # file is opened in read (r) mode
print(file.read())

file.close()

Learn Data Science with

3

Mã hóa như thế này cũng có khả năng làm hỏng tệp, khiến tệp không được đọc hoặc sử dụng lại trong tương lai. Ví dụ này đơn giản, nhưng nếu bạn đang viết một tập lệnh có thêm thông tin bổ sung vào một tệp dài chứa đầy dữ liệu khách hàng có giá trị hoặc dữ liệu mất hàng tháng để tìm kiếm trên web, thì tệp bị hỏng sẽ trở thành một vấn đề tốn kém

Để khắc phục ví dụ này, chúng tôi cần đảm bảo đóng tệp sau khi ghi trước khi thử đọc lại

f1 = open('file_1.txt','r')
print(f1.read())
f1.close()

f2 = open('file_1.txt', 'a')
f2.write(' and we have read it.')
f2.close()

f3 = open('file_1.txt','r')
print(f3.read())
f3.close()

Learn Data Science with

Ngoài

This is file 1 text
This is file 1 text and we have read it.

Learn Data Science with

Một cách thay thế dễ dàng hơn để xử lý thủ công

file = open('file_1.txt','r')        # file is opened in read (r) mode
print(file.read())

file = open('file_1.txt', 'a')       # file is opened in append (a) mode
file.write(' and we have read it.')

file = open('file_1.txt','r')        # file is opened in read (r) mode
print(file.read())

file.close()

Learn Data Science with

4 cho mỗi tệp là sử dụng trình quản lý bối cảnh

ví dụ 2. Trình quản lý bối cảnh

Để đóng thuộc tính tệp, giải pháp đơn giản nhất tuân theo các phương pháp hay nhất là sử dụng cái được gọi là câu lệnh

file = open('file_1.txt','r')        # file is opened in read (r) mode
print(file.read())

file = open('file_1.txt', 'a')       # file is opened in append (a) mode
file.write(' and we have read it.')

file = open('file_1.txt','r')        # file is opened in read (r) mode
print(file.read())

file.close()

Learn Data Science with

5 bất cứ khi nào mở tệp. Mẫu này còn được gọi là sử dụng trình quản lý ngữ cảnh, một khái niệm cơ bản trong Python

Dưới đây là một ví dụ về việc sử dụng câu lệnh

file = open('file_1.txt','r')        # file is opened in read (r) mode
print(file.read())

file = open('file_1.txt', 'a')       # file is opened in append (a) mode
file.write(' and we have read it.')

file = open('file_1.txt','r')        # file is opened in read (r) mode
print(file.read())

file.close()

Learn Data Science with

5 để đảm bảo các tệp được đóng

with open('file_1.txt','r') as f:
    print(f.read())

with open('file_1.txt', 'a') as f:
    f.write(' and we have read it.')

with open('file_1.txt','r') as f:
    print(f.read())

Learn Data Science with

Ngoài

This is file 1 text and we have read it.
This is file 1 text and we have read it. and we have read it.

Learn Data Science with

Mã được cập nhật cung cấp chức năng tương tự với yêu cầu viết mã ít hơn. Sử dụng câu lệnh

file = open('file_1.txt','r')        # file is opened in read (r) mode
print(file.read())

file = open('file_1.txt', 'a')       # file is opened in append (a) mode
file.write(' and we have read it.')

file = open('file_1.txt','r')        # file is opened in read (r) mode
print(file.read())

file.close()

Learn Data Science with

7 sẽ tự động đóng tệp sau khi hoàn thành khối

Việc sử dụng trình quản lý ngữ cảnh không chỉ giúp bạn không phải nhớ đóng tệp theo cách thủ công mà còn giúp người khác đọc mã của bạn dễ dàng biết chính xác chương trình đang sử dụng tệp như thế nào

Sử dụng

file = open('file_1.txt','r')        # file is opened in read (r) mode
print(file.read())

file = open('file_1.txt', 'a')       # file is opened in append (a) mode
file.write(' and we have read it.')

file = open('file_1.txt','r')        # file is opened in read (r) mode
print(file.read())

file.close()

Learn Data Science with

7 thường là lựa chọn đúng đắn, nhưng có thể có những tình huống mà dự án của bạn có thể yêu cầu đóng tệp theo cách thủ công

Lỗi phạm vi trình quản lý bối cảnh

Khi sử dụng trình quản lý bối cảnh, có một số lỗi có thể xảy ra. Một ví dụ về điều này là một

file = open('file_1.txt','r')        # file is opened in read (r) mode
print(file.read())

file = open('file_1.txt', 'a')       # file is opened in append (a) mode
file.write(' and we have read it.')

file = open('file_1.txt','r')        # file is opened in read (r) mode
print(file.read())

file.close()

Learn Data Science with

9. Hãy xem xét mã dưới đây

with open('file_2.txt', 'a') as f:
    message = 'This is the file 2 text'
f.write(message)

Learn Data Science with

Ngoài

file = open('file_1.txt','r')        # file is opened in read (r) mode
print(file.read())

file = open('file_1.txt', 'a')       # file is opened in append (a) mode
file.write(' and we have read it.')

file = open('file_1.txt','r')        # file is opened in read (r) mode
print(file.read())

file.close()

Learn Data Science with

0

Lỗi này xảy ra do chúng tôi đã sử dụng thao tác tệp

This is file 1 text
This is file 1 text and we have read it.

Learn Data Science with

0 bên ngoài phạm vi
file = open('file_1.txt','r')        # file is opened in read (r) mode
print(file.read())

file = open('file_1.txt', 'a')       # file is opened in append (a) mode
file.write(' and we have read it.')

file = open('file_1.txt','r')        # file is opened in read (r) mode
print(file.read())

file.close()

Learn Data Science with

7. Vì trình quản lý bối cảnh tự động đóng tệp sau khi thực thi mã thụt lề, nên Python không thể thực hiện bất kỳ thao tác tệp nào tiếp theo. Chúng ta có thể dễ dàng khắc phục sự cố này bằng cách giữ mọi thứ trong phạm vi
file = open('file_1.txt','r')        # file is opened in read (r) mode
print(file.read())

file = open('file_1.txt', 'a')       # file is opened in append (a) mode
file.write(' and we have read it.')

file = open('file_1.txt','r')        # file is opened in read (r) mode
print(file.read())

file.close()

Learn Data Science with

7, như vậy

file = open('file_1.txt','r')        # file is opened in read (r) mode
print(file.read())

file = open('file_1.txt', 'a')       # file is opened in append (a) mode
file.write(' and we have read it.')

file = open('file_1.txt','r')        # file is opened in read (r) mode
print(file.read())

file.close()

Learn Data Science with

1

Tập lệnh mới thực thi thành công, ghi thông báo vào tệp trước khi đóng tệp

Bản tóm tắt

Bất kỳ ai làm việc với Python rất có thể sẽ cần phải làm việc nhiều với các tệp. Một phần thiết yếu của tương tác tệp là đảm bảo đóng chúng khi bạn hoàn thành

Để các tệp mở có thể gây ra nhiều sự cố, đặc biệt là trong các dự án lớn dựa trên nhiều loại tệp

Như chúng ta đã thảo luận, một cách đơn giản để tránh các rắc rối mà việc để tệp mở có thể gây ra là mở tệp của bạn bằng trình quản lý ngữ cảnh, trình quản lý này sẽ tự động đóng tệp cho bạn. Làm theo mẫu này sẽ giúp bạn tiết kiệm một công việc đồng thời ngăn ngừa lãng phí tài nguyên và sự không nhất quán của phiên bản. Quan trọng nhất, việc sử dụng các câu lệnh

file = open('file_1.txt','r')        # file is opened in read (r) mode
print(file.read())

file = open('file_1.txt', 'a')       # file is opened in append (a) mode
file.write(' and we have read it.')

file = open('file_1.txt','r')        # file is opened in read (r) mode
print(file.read())

file.close()

Learn Data Science with

5 sẽ giúp mã của bạn trông rõ ràng và chuyên nghiệp hơn

Bắt đầu học miễn phí

Nhận thông tin cập nhật trong hộp thư đến của bạn

Tham gia cùng hơn 7.500 người học khoa học dữ liệu

Bài viết gần đây

Ưu đãi khóa học tốt nhất cho Thứ Sáu Đen và Thứ Hai Điện Tử 2022
Hàm sigmoid
chấm sản phẩm
7 khóa học về trí tuệ nhân tạo (AI) tốt nhất năm 2023


Nhận thông tin cập nhật trong hộp thư đến của bạn

Tham gia cùng hơn 7.500 người học khoa học dữ liệu

Gặp gỡ các tác giả

Close() trong python là gì?

Nhà khoa học dữ liệu Alfie Grace

Alfie tốt nghiệp Thạc sĩ Kỹ thuật Cơ khí tại Đại học College London. Anh ấy hiện đang làm Nhà khoa học dữ liệu tại Square Enix. Tìm anh ấy trên LinkedIn

Hàm close() trả về trong Python là gì?

Mô tả. Trả về a Boolean cho biết tệp có bị đóng hay không .

Việc sử dụng chức năng đóng là gì?

Hàm close() đóng bộ mô tả, bộ lọc . Điều này giải phóng bộ mô tả để được trả về bởi các lệnh gọi open() trong tương lai và các lệnh gọi khác tạo bộ mô tả.

Tại sao lại là. đóng quan trọng trong Python?

Bạn đã biết lý do tại sao việc đóng tệp trong Python lại quan trọng. Vì các tệp là tài nguyên hạn chế do hệ điều hành quản lý nên việc đảm bảo các tệp được đóng sau khi sử dụng sẽ bảo vệ khỏi các sự cố khó gỡ lỗi như hết khả năng xử lý tệp hoặc gặp phải dữ liệu bị hỏng

Sự khác biệt giữa đóng tệp và đóng tệp () là gì?

đã đóng là thành viên cho bạn biết liệu tệp của bạn đã được đóng hay chưa (điều này tự động thực hiện), f. close() đóng tệp của bạn .