Module tempfile trong thư viện chuẩn định nghĩa các hàm để tạo tệp và thư mục tạm thời. Chúng được tạo trong các thư mục tạm đặc biệt được định nghĩa bởi hệ thống tệp của hệ điều hành. Ví dụ, trên Windows thư mục temp nằm ở profile/AppData/Local/Temp trong khi trên Linux các tệp tạm được giữ ở thư mục /tmp.
Các hàm sau được định nghĩa trong module tempfile:
TemporaryFile()
Hàm này tạo một tệp tạm trong thư mục temp và trả về một đối tượng tệp, tương tự như hàm built-in open(). Tệp được mở ở chế độ wb+ mặc định, nghĩa là nó có thể đồng thời dùng để đọc/ghi dữ liệu nhị phân. Điều quan trọng, mục nhập của tệp trong thư mục temp bị xóa ngay khi đối tượng tệp được đóng. Mã sau cho thấy cách sử dụng hàm TemporaryFile():
>>> import tempfile >>> f = tempfile.TemporaryFile() >>> f.write(b'Welcome to TutorialsPoint') >>> import os >>> f.seek(os.SEEK_SET) >>> f.read() b'Welcome to TutorialsPoint' >>> f.close()
Ví dụ sau mở đối tượng TemporaryFile ở chế độ w+ để ghi và sau đó đọc dữ liệu văn bản thay vì dữ liệu nhị phân.
>>> ff = tempfile.TemporaryFile(mode='w+')
>>> ff.write('hello world')
>>> ff.seek(0)
>>> ff.read()
'hello world'
>>> ff.close()
NamedTemporaryFile()
Hàm này tương tự như hàm TemporaryFile(). Sự khác biệt duy nhất là một tệp với tên ngẫu nhiên hiển thị trong thư mục temp chỉ định của hệ điều hành. Tên có thể được truy xuất bằng thuộc tính name của đối tượng tệp. Tệp này cũng bị xóa ngay lập tức khi đóng nó.
>>> fo = tempfile.NamedTemporaryFile() >>> fo.name 'C:\\Users\\acer\\AppData\\Local\\Temp\\tmpipreok8q' >>> fo.close()
TemporaryDirectory()
Hàm này tạo một thư mục tạm. Bạn có thể chọn vị trí của thư mục tạm này bằng cách đề cập tham số dir. Câu lệnh sau sẽ tạo một thư mục tạm trong thư mục C:\python36.
>>> f = tempfile.TemporaryDirectory(dir="C:/python36") <TemporaryDirectory 'C:/python36\\tmp9wrjtxc_'>
Thư mục được tạo xuất hiện trong thư mục dir1. Nó bị xóa bằng cách gọi hàm cleanup() trên đối tượng thư mục.
>>> f.name 'C:/python36\\tmp9wrjtxc_' >>> f.cleanup()
mkstemp()
Hàm này cũng tạo một tệp tạm, tương tự như hàm TemporaryFile(). Bổ sung thêm, các tham số suffix và prefix có sẵn để thêm vào tệp tạm được tạo. Khác với trường hợp TemporaryFile(), tệp được tạo không tự động bị xóa. Nó nên được xóa thủ công.
>>> f = tempfile.mkstemp(suffix='.tp') C:\Users\acer\AppData\Local\Temp\tmpbljk6ku8.tp
mkdtemp()
Hàm này cũng tạo một thư mục tạm trong thư mục temp của hệ điều hành và trả về đường dẫn tuyệt đối của nó. Để định vị trí rõ ràng cho việc tạo nó, sử dụng tham số dir. Thư mục này cũng không tự động bị xóa.
>>> tempfile.mkdtemp(dir="c:/python36") 'c:/python36\\tmpruxmm66u'
gettempdir()
Hàm này trả về tên thư mục để lưu trữ tệp tạm. Tên này thường được lấy từ biến môi trường tempdir. Trên nền tảng Windows, nó thường là user/AppData/Local/Temp hoặc windowsdir/temp hoặc systemdrive/temp. Trên Linux nó thường là /tmp. Thư mục này được dùng làm giá trị mặc định cho tham số dir.
>>> tempfile.gettempdir() 'C:\\Users\\acer\\AppData\\Local\\Temp'
Trong bài viết này, các hàm trong module tempfile đã được giải thích.