Đóng Python

Khi làm việc với các tệp trong Python, việc gọi phương thức close() một cách rõ ràng sau khi xử lý tệp là điều khá phổ biến. Điều này có thể hoạt động tốt trong nhiều trường hợp, tuy nhiên, đó là một cạm bẫy phổ biến đối với người mới bắt đầu và nhà phát triển đến từ các ngôn ngữ khác

Lấy ví dụ đoạn mã sau. Nếu một ngoại lệ được ném ra trước khi gọi phương thức close(), tệp sẽ vẫn mở. Trong trường hợp như vậy, mã sẽ ngừng thực thi trước khi close() được gọi, để lại tệp mở sau khi chương trình gặp sự cố

f = open('filename', 'w') f.write('Hello world!') f.close()

Một cách để giảm thiểu vấn đề này là gói gọn lệnh gọi write() trong một câu lệnh try. Bằng cách này, bạn có thể xử lý bất kỳ trường hợp ngoại lệ nào và bạn có thể sử dụng finally để đảm bảo tệp được đóng

f = open('filename', 'w') try: f.write('Hello world!') finally: f.close()

Một tùy chọn khác do Python cung cấp là sử dụng câu lệnh with để đảm bảo tệp được đóng khi mã sử dụng nó chạy xong. Điều này đúng ngay cả khi một ngoại lệ được ném ra

with open('filename', 'w') as f: f.write('Hello world!')

Hơn như thế này

  • Viết mã Python ngắn gọn, hiệu quả không phải lúc nào cũng đơn giản. Đọc cách chúng tôi tối ưu hóa đoạn mã danh sách của mình để tăng hiệu suất bằng một vài thủ thuật đơn giản

  • Có một cách hay để kiểm tra tính trống rỗng của danh sách Python và cách tốt hơn. Cái nào bạn đang dùng?

  • Các đối số mặc định có thể thay đổi có thể làm vấp ngã những người mới bắt đầu sử dụng Python cũng như những người kỳ cựu. Đây là một cách giải quyết nhanh chóng để đối phó với chúng

    Giả sử bạn đang làm việc trên một tệp được lưu trên máy tính cá nhân của mình. Nếu bạn muốn thực hiện bất kỳ thao tác nào trên tệp đó như mở tệp, cập nhật tệp hoặc bất kỳ thao tác nào khác trên tệp đó, tất cả các thao tác đó đều có trong Xử lý tệp. Vì vậy, Xử lý tệp trong khoa học máy tính có nghĩa là làm việc với các tệp được lưu trữ trên đĩa. Điều này bao gồm tạo, xóa, mở hoặc đóng tệp và viết, đọc hoặc sửa đổi dữ liệu được lưu trữ trong các tệp đó

    Nhu cầu xử lý tệp là gì?

    Trong khoa học máy tính, chúng tôi có các chương trình để thực hiện tất cả các loại nhiệm vụ. Một chương trình có thể yêu cầu đọc dữ liệu từ đĩa và lưu trữ kết quả trên đĩa để sử dụng trong tương lai. Đây là lý do tại sao chúng ta cần xử lý tệp. Chẳng hạn, nếu bạn cần phân tích, xử lý và lưu trữ dữ liệu từ một trang web, thì trước tiên bạn cần loại bỏ (điều này có nghĩa là lấy tất cả dữ liệu được hiển thị trên trang web như văn bản và hình ảnh) dữ liệu và lưu trữ trên đĩa của bạn, sau đó . Điều này được thực hiện bởi vì việc cạo dữ liệu từ một trang web mỗi khi bạn cần là điều không mong muốn vì sẽ mất rất nhiều thời gian

    Mở và đóng tệp bằng Python

    Trong xử lý tệp, chúng tôi có hai loại tệp, một là tệp văn bản và loại khác là tệp nhị phân. Chúng ta có thể mở tệp trong python bằng chức năng mở

    chức năng mở ()

    Hàm này nhận hai đối số. Đầu tiên là tên tệp cùng với đường dẫn đầy đủ của nó và cái còn lại là chế độ truy cập. Hàm này trả về một đối tượng tệp

    cú pháp

    Điểm quan trọng

    • Tệp và tập lệnh python phải nằm trong cùng một thư mục. Khác, bạn cần cung cấp đường dẫn đầy đủ của tệp
    • Theo mặc định, chế độ truy cập là chế độ đọc nếu bạn không chỉ định bất kỳ chế độ nào. Tất cả các chế độ truy cập mở tệp được mô tả bên dưới

    Chế độ truy cập cho biết loại hoạt động có thể có trong tệp đã mở. Có nhiều chế độ khác nhau để chúng ta có thể mở một tệp. Hãy xem chúng

    Không có nối tiếp. Chế độMô tả1. rMở tệp ở chế độ chỉ đọc. Con trỏ tệp nằm ở đầu tệp. Đây cũng là chế độ mặc định. 2. rbGiống như chế độ r, ngoại trừ điều này sẽ mở tệp ở chế độ nhị phân. 3. r+Mở tệp để đọc và ghi. Con trỏ ở đầu tệp. 4. rb+Tương tự như chế độ r+, ngoại trừ điều này, mở tệp ở chế độ nhị phân. 5. wMở tệp để ghi. Ghi đè lên tệp hiện có và nếu tệp không có thì tạo tệp mới. 6. wbGiống như chế độ w, ngoại trừ điều này sẽ mở tệp ở định dạng nhị phân. 7. w+Mở tệp cho cả đọc và ghi, phần còn lại giống như chế độ w. 8. wb+Giống như w+ ngoại trừ điều này sẽ mở tệp ở định dạng nhị phân. 9. aMở tệp để nối thêm. Nếu có tệp thì con trỏ ở cuối tệp, ngược lại nó tạo tệp mới để ghi. 10. abGiống như một chế độ, ngoại trừ điều này sẽ mở tệp ở định dạng nhị phân. 11. a+Mở tệp để nối thêm và đọc. Con trỏ tệp nằm ở cuối tệp nếu tệp tồn tại, ngược lại nó tạo tệp mới để đọc và ghi. 12. ab+Giống như chế độ a+, ngoại trừ điều này, mở tệp ở định dạng nhị phân

    Ví dụ về mở và đóng tệp trong Python

    Mã số

    # When the file is in the same folder where the python script is present. Also access mode is 'r' which is read mode. file = open('test.txt',mode='r') # When the file is not in the same folder where the python script is present. In this case, the whole path of the file should be written. file = open('D:/data/test.txt',mode='r')

    Thực tế chung là đóng tệp đã mở vì tệp đã đóng sẽ giảm nguy cơ bị đọc hoặc cập nhật không chính đáng. Chúng ta có thể đóng tệp trong python bằng hàm close. Hãy thảo luận về nó

    chức năng đóng ()

    Hàm này không nhận bất kỳ đối số nào và bạn có thể gọi trực tiếp hàm close() bằng đối tượng tệp. Nó có thể được gọi nhiều lần, nhưng nếu bất kỳ thao tác nào được thực hiện trên tệp đã đóng, một ngoại lệ "ValueError" sẽ xuất hiện

    cú pháp

    Bạn cũng có thể sử dụng câu lệnh 'with' với open, vì nó cung cấp khả năng xử lý ngoại lệ tốt hơn và đơn giản hóa nó bằng cách cung cấp một số tác vụ dọn dẹp. Ngoài ra, nó sẽ tự động đóng tệp và bạn không phải thực hiện thủ công

    Ví dụ sử dụng câu lệnh with

    Mã số

    with open("test.txt", mode='r') as f: # perform file operations

    Phương pháp hiển thị trong phần trên không hoàn toàn an toàn. Nếu một số ngoại lệ xảy ra trong khi mở tệp, thì mã sẽ thoát mà không đóng tệp. Một cách an toàn hơn là sử dụng khối lần thử cuối cùng trong khi mở tệp

    Mã số

    try: file = open('test.txt',mode='r') # Perform file handling operations finally: file.close()

    Bây giờ, điều này đảm bảo rằng tệp sẽ đóng ngay cả khi có ngoại lệ xảy ra khi mở tệp. Vì vậy, bạn có thể sử dụng phương thức câu lệnh 'with' để thay thế. Bất kỳ phương pháp nào trong hai phương pháp đều tốt

    Bây giờ chúng ta sẽ xem các ví dụ về cách mở và đóng tệp trong python ở nhiều chế độ khác nhau. Dưới đây là một ví dụ về một vài chế độ nghỉ ngơi quan trọng mà bạn có thể tự mình thử

    Bây giờ chúng ta sẽ thực hiện một số thao tác trên tệp và in nội dung của tệp sau mỗi thao tác để hiểu rõ hơn về cách thức hoạt động của nó. Ví dụ được đưa ra dưới đây. Cả tệp và tập lệnh python phải nằm trong cùng một thư mục

    Mã số

    # Opening file in read mode and printing the contents of the file. with open("test.txt", mode='r') as f: data = f.readlines() #This reads all the lines from the file in a list. print(data) #This will print the content of the Hello World file! # Opening a file in write mode. with open("test.txt", mode='w') as f: f.write("Data after write operation") # Opening file in read mode to check the contents. with open("test.txt", mode='r') as f: data = f.readlines() # this reads all the lines from the file in a list. print(data) #this will print the overwritten content of the file that is "Data after write operation" # Opening a file in append mode and appending data to the file. with open("test.txt", "a") as f: f.write(" Appending new data to the file") # Opening file in read mode to check the contents. with open("test.txt", mode='r') as f: data = f.readlines() #This reads all the lines from the file in a list. print(data) #this will print the existing content of file plus the appended content

    Giải trình

    Trong ví dụ trên, lúc đầu thử nghiệm. txt được mở ở chế độ đọc (r) để đọc nội dung của nó và dữ liệu tệp đó sẽ được in và sau đó tệp đó được mở bằng chế độ ghi (w) để nó ghi đè lên tất cả nội dung của tệp đó và dữ liệu mới sẽ được . Sau khi tệp đó được mở ở chế độ append(a), do đó, dữ liệu mới sẽ được thêm vào dữ liệu hiện có của tệp và sẽ không bị ghi đè

    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

    Điều gì xảy ra nếu bạn không đóng Python?

    Python không xóa bộ đệm—nghĩa là ghi dữ liệu vào tệp—cho đến khi chắc chắn rằng bạn đã viết xong và một cách để thực hiện việc này là đóng tệp. Nếu bạn ghi vào một tệp mà không đóng, dữ liệu sẽ không chuyển đến tệp đích .

Chủ đề