Cách kiểm tra tệp được mở hay đóng bằng Python

How Check File Is Opened



Tệp được sử dụng để lưu trữ dữ liệu vĩnh viễn. Làm việc với một tệp là một nhiệm vụ rất phổ biến của bất kỳ ngôn ngữ lập trình nào. Nhiều hàm tích hợp tồn tại trong Python để tạo, mở, đọc, ghi và đóng tệp. Có thể tạo hai loại tệp để lưu trữ dữ liệu. Đây là các tệp văn bản và tệp nhị phân. Bất kỳ tệp nào cũng được yêu cầu mở trước khi đọc hoặc ghi. Các mở ra() hàm được sử dụng trong Python để mở một tệp. Sử dụng mở ra() chức năng là một cách để kiểm tra một tập tin cụ thể được mở hay đóng. Nếu mở ra() hàm mở một tệp đã mở trước đó, sau đó Lỗi IO sẽ được tạo. Một cách khác để kiểm tra tệp được mở hay đóng là kiểm tra các giá trị của đóng cửa thuộc tính của đối tượng xử lý tệp. Sử dụng đổi tên() là một cách khác để kiểm tra tệp được mở hay đóng. Các cách khác nhau để kiểm tra bất kỳ tệp nào được mở hoặc đóng bằng Python đã được hiển thị trong hướng dẫn này.

Tạo một tệp để kiểm tra:

Bạn có thể sử dụng bất kỳ tệp hiện có nào hoặc tạo tệp mới để kiểm tra mã ví dụ được hiển thị trong hướng dẫn này. Một tệp văn bản mới có tên client.txt đã được tạo với nội dung sau để sử dụng sau trong phần tiếp theo của hướng dẫn.







Tên ID Email
01 Jony Liver [được bảo vệ bằng email]
02 Manik Hossain [email được bảo vệ]
03 Neha Akter [email được bảo vệ]
04 Janatul Ferdous [email được bảo vệ]
05 Helal Uddin [email được bảo vệ]



Ví dụ-1: Kiểm tra tệp có được mở hay không bằng cách sử dụng IOError

Lỗi IO tạo ra khi hàm open () được gọi để mở một tệp đã được mở trước đó. Tạo tệp python bằng tập lệnh sau để kiểm tra tệp có được mở hay không bằng cách sử dụng thử ngoại trừ khối. Tại đây, mọi tên tệp hiện có sẽ được lấy làm đầu vào và mở ra để đọc. Tiếp theo, hàm open () được gọi một lần nữa để mở cùng một tệp sẽ xuất hiện IOError và in thông báo lỗi.



# Lấy tên tệp để kiểm tra
filename = input('Nhập bất kỳ tên tệp hiện có nào: ')
# Mở tệp lần đầu tiên bằng hàm open ()
fileHandler = mở(tên tệp,'NS')
# Thử mở lại cùng một tệp
cố gắng:
với mở('tên tập tin','NS') nhưtập tin:
# In thông báo thành công
in('Tệp đã được mở để đọc.')
# Tăng lỗi nếu tệp được mở trước đó
ngoại trừ IOError:
in('Tệp đã được mở rồi.')

Đầu ra:

Kết quả sau sẽ xuất hiện sau khi thực hiện tập lệnh trên. Ở đây, client.txt tồn tại ở vị trí hiện tại và thông báo lỗi, Tệp đã được mở rồi, đã in cho Lỗi IO ngoại lệ.





Ví dụ-2: Kiểm tra tệp đã đóng hay chưa bằng cách sử dụng thuộc tính đã đóng.

Giá trị của đóng cửa thuộc tính sẽ đúng nếu bất kỳ tệp nào bị đóng. Tạo tệp python bằng tập lệnh sau để kiểm tra tệp đã đóng hay không tồn tại ở vị trí hiện tại. Tập lệnh ví dụ trước sẽ tạo ra lỗi nếu tên tệp được lấy từ người dùng không tồn tại ở vị trí hiện tại. Vấn đề này đã được giải quyết trong ví dụ này. Các bạn mô-đun được sử dụng ở đây để kiểm tra sự tồn tại của tên tệp sẽ được lấy từ người dùng. Hàm check_closed () đã định nghĩa để kiểm tra xem tệp đã đóng hay chưa sẽ được gọi nếu tệp tồn tại.



# Nhập mô-đun hệ điều hành để kiểm tra sự tồn tại của tệp
nhập khẩu
# Hàm Drfine kiểm tra tệp đã đóng hay chưa
def check_closed():
nếu nhưfileHandler.closed == Sai:
# In thông báo thành công
in('Tệp đã được mở để đọc.')
khác:
# In thông báo lỗi
in('Tệp đã đóng.')

# Lấy tên tệp để kiểm tra
filename = input('Nhập bất kỳ tên tệp hiện có nào: ')
# Kiểm tra tệp có tồn tại hay không
nếu nhưos.path.exists(tên tập tin):
# Mở tệp để đọc
fileHandler = mở(tên tệp,'NS')
# Gọi hàm
check_closed()
khác:
# In thông báo nếu tệp không tồn tại
in('Tập tin không tồn tại.')

Đầu ra:

Kết quả sau sẽ xuất hiện sau khi thực hiện tập lệnh trên. Ở đây, client.txt tồn tại ở vị trí hiện tại và thông báo thành công, Tệp đã được mở để đọc, đã được in vì giá trị của thuộc tính đã đóng được trả lại Sai .

Ví dụ-3: Kiểm tra tệp có được mở hay không bằng cách sử dụng OSError

Các OSError tạo ra khi hàm rename () được gọi nhiều lần cho một tệp đã được mở. Tạo tệp python bằng tập lệnh sau để kiểm tra tệp được mở hay đóng bằng cách sử dụng OSError . Mô-đun hệ điều hành đã được sử dụng trong tập lệnh để kiểm tra sự tồn tại của tệp và đổi tên tệp. Khi mà đổi tên() được gọi lần thứ hai, OSError sẽ được tạo và thông báo lỗi tùy chỉnh sẽ được in.

# Nhập mô-đun hệ điều hành để kiểm tra sự tồn tại của tệp
nhập khẩu
# Đặt tên tệp hiện có
tên tệp ='client.txt'
# Đặt tên tệp mới
newname ='khách hàng.txt'
# Kiểm tra tệp có tồn tại hay không
nếu nhưos.path.exists(tên tập tin):
cố gắng:
# Gọi hàm đổi tên lần đầu tiên
os.rename(tên tệp, tên mới)
# Gọi hàm đổi tên lần thứ hai
os.rename(tên tệp, tên mới)
# Tăng lỗi nếu tệp đã mở
ngoại trừ OSError:
in('Tệp vẫn được mở.')

khác:
# In thông báo nếu tệp không tồn tại
in('Tập tin không tồn tại.')

Đầu ra:

Kết quả sau sẽ xuất hiện sau khi thực hiện tập lệnh trên. Ở đây, client.txt tồn tại ở vị trí hiện tại và thông báo lỗi, Tệp vẫn được mở, đã in bởi vì OSError ngoại lệ đã được tạo ra khi thứ hai đổi tên() chức năng đã được thực thi.

Phần kết luận:

Khi chúng ta cần làm việc với cùng một tệp nhiều lần trong một tập lệnh, điều cần thiết là phải biết tệp được mở hay đóng. Tốt hơn nên gọi hàm close () để đóng tệp sau khi hoàn thành thao tác với tệp. Lỗi xảy ra khi tệp được mở lần thứ hai trong cùng một tập lệnh mà không đóng tệp đó. Các giải pháp khác nhau cho vấn đề này đã được hiển thị trong hướng dẫn này bằng cách sử dụng các ví dụ đơn giản để giúp người dùng python.