โมดูล tempfile ในไลบรารีมาตรฐานนิยามฟังก์ชันสำหรับสร้างไฟล์และไดเรกทอรีชั่วคราว พวกมันถูกสร้างในไดเรกทอรี temp מיוחד ที่ระบบไฟล์ของระบบปฏิบัติการกำหนด ตัวอย่างเช่น ใน Windows โฟลเดอร์ temp อยู่ที่ profile/AppData/Local/Temp ในขณะที่ Linux เก็บไฟล์ชั่วคราวใน /tmp
ฟังก์ชันต่อไปนี้ถูกนิยามในโมดูล tempfile:
TemporaryFile()
ฟังก์ชันนี้สร้างไฟล์ชั่วคราวในไดเรกทอรี temp และคืนค่าออบเจ็กต์ไฟล์ คล้ายกับฟังก์ชัน built-in open() ไฟล์ถูกเปิดในโหมด wb+ โดยค่าเริ่มต้น หมายถึงสามารถอ่าน/เขียนข้อมูลไบนารีพร้อมกันได้ จุดสำคัญคือ รายการของไฟล์ในโฟลเดอร์ temp จะถูกลบทันทีที่ออบเจ็กต์ไฟล์ถูกปิด โค้ดต่อไปนี้แสดงการใช้งาน 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()
ตัวอย่างต่อไปนี้เปิด TemporaryFile ในโหมด w+ เพื่อเขียนและอ่านข้อมูลข้อความแทนข้อมูลไบนารี:
>>> ff = tempfile.TemporaryFile(mode='w+')
>>> ff.write('hello world')
>>> ff.seek(0)
>>> ff.read()
'hello world'
>>> ff.close()
NamedTemporaryFile()
ฟังก์ชันนี้คล้าย TemporaryFile() ความแตกต่างคือ ไฟล์ที่มีชื่อสุ่มจะมองเห็นได้ในโฟลเดอร์ temp ที่กำหนดของระบบปฏิบัติการ ชื่อสามารถดึงได้จากแอตทริบิวต์ name ของออบเจ็กต์ไฟล์ ไฟล์นี้ก็จะถูกลบทันทีเมื่อปิด
>>> fo = tempfile.NamedTemporaryFile() >>> fo.name 'C:\\Users\\acer\\AppData\\Local\\Temp\\tmpipreok8q' >>> fo.close()
TemporaryDirectory()
ฟังก์ชันนี้สร้างไดเรกทอรีชั่วคราว สามารถเลือกตำแหน่งได้ด้วยพารามิเตอร์ dir คำสั่งต่อไปนี้จะสร้างไดเรกทอรีชั่วคราวใน C:\python36:
>>> f = tempfile.TemporaryDirectory(dir="C:/python36") <TemporaryDirectory 'C:/python36\\tmp9wrjtxc_'>
ไดเรกทอรีที่สร้างจะปรากฏในโฟลเดอร์ dir1 ถูกลบโดยการเรียก cleanup() บนออบเจ็กต์ไดเรกทอรี:
>>> f.name 'C:/python36\\tmp9wrjtxc_' >>> f.cleanup()
mkstemp()
ฟังก์ชันนี้สร้างไฟล์ชั่วคราวคล้าย TemporaryFile() เพิ่มเติมมีพารามิเตอร์ suffix และ prefix สำหรับต่อท้าย/นำหน้าชื่อไฟล์ชั่วคราว ไม่เหมือน TemporaryFile() ไฟล์ที่สร้างจะไม่ถูกลบอัตโนมัติ ต้องลบด้วยตนเอง
>>> f = tempfile.mkstemp(suffix='.tp') C:\Users\acer\AppData\Local\Temp\tmpbljk6ku8.tp
mkdtemp()
ฟังก์ชันนี้สร้างไดเรกทอรีชั่วคราวในโฟลเดอร์ temp ของระบบปฏิบัติการและคืนค่า absolute path name หากต้องการกำหนดตำแหน่งการสร้างชัดเจน ใช้พารามิเตอร์ dir โฟลเดอร์นี้ก็ไม่ถูกลบอัตโนมัติเช่นกัน
>>> tempfile.mkdtemp(dir="c:/python36") 'c:/python36\\tmpruxmm66u'
gettempdir()
ฟังก์ชันนี้คืนค่าชื่อไดเรกทอรีสำหรับเก็บไฟล์ชั่วคราว ชื่อนี้โดยทั่วไปได้จากตัวแปรสภาพแวดล้อม tempdir ใน Windows โดยทั่วไปคือ user/AppData/Local/Temp หรือ windowsdir/temp หรือ systemdrive/temp ใน Linux ปกติคือ /tmp ไดเรกทอรีนี้ใช้เป็นค่าเริ่มต้นของพารามิเตอร์ dir
>>> tempfile.gettempdir() 'C:\\Users\\acer\\AppData\\Local\\Temp'
ในบทความนี้ได้อธิบายฟังก์ชันในโมดูล tempfile