cara membuat direktori sementara dan mendapatkan path / nama file dengan python
cara membuat direktori sementara dan mendapatkan path / nama file dengan python
Jawaban:
Gunakan mkdtemp()
fungsi dari tempfile
modul:
import tempfile
import shutil
dirpath = tempfile.mkdtemp()
# ... do stuff with dirpath
shutil.rmtree(dirpath)
with tempfile.TemporaryDirectory() as dirpath:
, dan direktori sementara akan secara otomatis dibersihkan setelah keluar dari manajer konteks. docs.python.org/3.4/library/…
Dalam Python 3, TemporaryDirectory dalam modul tempfile dapat digunakan.
Ini langsung dari contoh :
import tempfile
with tempfile.TemporaryDirectory() as tmpdirname:
print('created temporary directory', tmpdirname)
# directory and contents have been removed
Jika Anda ingin menyimpan direktori sedikit lebih lama, maka hal seperti ini bisa dilakukan (bukan dari contoh):
import tempfile
import shutil
temp_dir = tempfile.TemporaryDirectory()
print(temp_dir.name)
# use temp_dir, and when done:
shutil.rmtree(temp_dir.name)
Seperti @MatthiasRoelandts tunjukkan, dokumentasi juga mengatakan bahwa "direktori dapat dibersihkan secara eksplisit dengan memanggil cleanup()
metode".
Untuk memperluas jawaban lain, berikut adalah contoh yang cukup lengkap yang dapat membersihkan tmpdir bahkan pada pengecualian:
import contextlib
import os
import shutil
import tempfile
@contextlib.contextmanager
def cd(newdir, cleanup=lambda: True):
prevdir = os.getcwd()
os.chdir(os.path.expanduser(newdir))
try:
yield
finally:
os.chdir(prevdir)
cleanup()
@contextlib.contextmanager
def tempdir():
dirpath = tempfile.mkdtemp()
def cleanup():
shutil.rmtree(dirpath)
with cd(dirpath, cleanup):
yield dirpath
def main():
with tempdir() as dirpath:
pass # do something here
Dalam python 3.2 dan yang lebih baru, ada manajer konteks yang berguna untuk ini di stdlib https://docs.python.org/3/library/tempfile.html#tempfile.TentaraDirectory
Jika saya mendapatkan pertanyaan Anda dengan benar, Anda juga ingin tahu nama-nama file yang dihasilkan di dalam direktori sementara? Jika demikian, coba ini:
import os
import tempfile
with tempfile.TemporaryDirectory() as tmp_dir:
# generate some random files in it
files_in_dir = os.listdir(tmp_dir)