Điều nào sau đây là chính xác hơn?python: cần phải đóng tập tin từ mkstemp nếu tôi sử dụng fdopen?
fi, path = tempfile.mkstemp()
f = os.fdopen(fi, "w")
f.write(res)
f.close()
os.close(fi)
hay:
fi, path = tempfile.mkstemp()
f = os.fdopen(fi, "w")
f.write(res)
f.close()
Gotcha. một chút bối rối: mở hai lần, đóng một lần. nhưng tôi nhận được ý tưởng – Claudiu
'os.fdopen()' không nhất thiết phải mở bộ mô tả tệp, nó chỉ trả về đối tượng tệp mở cho tệp desciptor. Nếu bộ mô tả tập tin đã được mở, nó sẽ không mở lại. –
@Claudiu: Đó là vì hệ điều hành tạo sự khác biệt giữa các tệp * descriptors * (là các đối tượng cấp hệ điều hành) và tệp * stream * (là các đối tượng cấp libc). 'fopen' (' mở' trong Python) mở một bộ mô tả, sau đó mở một luồng bằng cách sử dụng bộ mô tả này. 'fdopen' mở một luồng mới bằng cách sử dụng một bộ mô tả hiện có. 'fclose' (' file.close' trong Python) đóng luồng và mô tả cơ bản của nó. – millimoose