Câu trả lời:
Bạn nên luôn luôn sử dụng open()
.
Như tài liệu nêu:
Khi mở tệp, tốt nhất nên sử dụng open () thay vì gọi trực tiếp hàm tạo này. tệp phù hợp hơn với kiểm tra loại (ví dụ: viết "isinstance (f, file)").
Ngoài ra, file()
đã bị xóa kể từ Python 3.0.
Hai lý do: Triết lý trăn "Phải có một cách để làm điều đó" và file
sẽ biến mất.
file
là loại thực tế (sử dụng ví dụ như file('myfile.txt')
gọi hàm tạo của nó). open
là một chức năng của nhà máy sẽ trả về một đối tượng tập tin.
Trong python 3.0 file
sẽ chuyển từ việc tích hợp sang được triển khai bởi nhiều lớp trong io
thư viện (hơi giống với Java với các trình đọc được đệm, v.v.)
file()
là một loại, giống như một int hoặc một danh sách. open()
là một chức năng để mở tập tin và sẽ trả về một file
đối tượng.
Đây là một ví dụ về thời điểm bạn nên sử dụng mở:
f = open(filename, 'r')
for line in f:
process(line)
f.close()
Đây là một ví dụ về thời điểm bạn nên sử dụng tệp:
class LoggingFile(file):
def write(self, data):
sys.stderr.write("Wrote %d bytes\n" % len(data))
super(LoggingFile, self).write(data)
Như bạn có thể thấy, có một lý do chính đáng để cả hai tồn tại và trường hợp sử dụng rõ ràng cho cả hai.
with
tuyên bố. with open(filename, 'r') as f: \ for line in f: \ process(line)
. Điều này tránh sự gần gũi rõ ràng. Python 2.6 trở lên hỗ trợ with
câu lệnh. Trong Python 2.5, bạn phải thêm from __future__ import with_statement
vào đầu mã của mình.
file
lớp được trang bị các phương thức đặc biệt được gọi tự động mỗi khi tệp được mở thông qua with
câu lệnh. Các phương pháp đặc biệt này đảm bảo rằng tệp được mở và đóng đúng cách và an toàn.
Về mặt chức năng, hai cái này giống nhau; Dù sao cũng open
sẽ gọi file
, vì vậy hiện tại sự khác biệt là vấn đề về phong cách. Các tài liệu Python khuyên bạn nên sử dụng open
.
Khi mở tệp, tốt nhất nên sử dụng open () thay vì gọi trực tiếp hàm tạo tệp.
Lý do là trong các phiên bản trong tương lai, chúng không được đảm bảo giống nhau ( open
sẽ trở thành chức năng của nhà máy, trả về các đối tượng thuộc các loại khác nhau tùy thuộc vào đường dẫn mà nó mở).
Chỉ bao giờ sử dụng open () để mở tệp. file () thực sự đang bị xóa trong 3.0 và hiện tại nó không dùng nữa. Họ đã có một mối quan hệ kỳ lạ, nhưng tập tin () đang diễn ra, vì vậy không cần phải lo lắng nữa.
Sau đây là từ các tài liệu Python 2.6. [khung công cụ] được thêm bởi tôi.
Khi mở tệp, tốt nhất nên sử dụng open () thay vì gọi trực tiếp hàm tạo [file ()] này. tệp phù hợp hơn với kiểm tra loại (ví dụ: viết isinstance (f, file)
Theo ông Van Rossum, mặc dù open () hiện là bí danh cho tệp () bạn nên sử dụng open () vì điều này có thể thay đổi trong tương lai.