Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

การสร้างไฟล์และไดเรกทอรีชั่วคราวด้วย Python

โมดูล 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