কীভাবে অস্থায়ী ডিরেক্টরি তৈরি করবেন এবং পাইথনে পথ / ফাইলের নাম পাবেন


উত্তর:


210

মডিউল mkdtemp()থেকে ফাংশনটি ব্যবহার করুন tempfile:

import tempfile
import shutil

dirpath = tempfile.mkdtemp()
# ... do stuff with dirpath
shutil.rmtree(dirpath)

7
আপনি যদি পরীক্ষায় এটি ব্যবহার করেন তবে ডিরেক্টরিটি (shutil.rmtree) মুছে ফেলার বিষয়ে নিশ্চিত হন কারণ এটি ব্যবহারের পরে স্বয়ংক্রিয়ভাবে মোছা হয়নি। "Mkdtemp () এর ব্যবহারকারী অস্থায়ী ডিরেক্টরি এবং এটির কাজগুলি মুছে ফেলার জন্য দায়বদ্ধ যখন এটি সম্পন্ন করা হয়।" দেখুন: docs.python.org/2/library/tempfile.html#tempfile.mkdtemp
নিলস বম

97
পাইথন 3 এ, আপনি করতে পারেন with tempfile.TemporaryDirectory() as dirpath:এবং প্রাসঙ্গিক পরিচালকটি থেকে বেরিয়ে আসার পরে অস্থায়ী ডিরেক্টরিটি স্বয়ংক্রিয়ভাবে পরিষ্কার হয়ে যাবে। docs.python.org/3.4/library/…
প্রতিসম

41

পাইথন 3 সালে TemporaryDirectory মধ্যে tempfile মডিউল ব্যবহার করা যাবে।

এটি সরাসরি উদাহরণগুলি থেকে :

import tempfile
with tempfile.TemporaryDirectory() as tmpdirname:
     print('created temporary directory', tmpdirname)
# directory and contents have been removed

আপনি যদি ডিরেক্টরিটি কিছুটা দীর্ঘ রাখতে চান তবে এরকম কিছু করা যেতে পারে (উদাহরণ থেকে নয়):

import tempfile
import shutil

temp_dir = tempfile.TemporaryDirectory()
print(temp_dir.name)
# use temp_dir, and when done:
shutil.rmtree(temp_dir.name)

@ ম্যাথিয়াসরোল্যান্ডস যেমন উল্লেখ করেছেন, ডকুমেন্টেশনে আরও বলা হয়েছে যে " cleanup()পদ্ধতিটি কল করে ডিরেক্টরিটি পরিষ্কারভাবে পরিষ্কার করা যায় "।


2
shutil.rmtree (টেম্প_ডির.নাম) প্রয়োজনীয় নয়।
সিডচা

37

অন্য উত্তরের জন্য প্রসারিত করতে এখানে মোটামুটি সম্পূর্ণ উদাহরণ রয়েছে যা ব্যতিক্রমকালেও tmpdir সাফ করতে পারে:

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


3

আমি যদি আপনার প্রশ্নটি সঠিকভাবে পেয়ে থাকি তবে আপনি অস্থায়ী ডিরেক্টরিতে থাকা ফাইলগুলির নামও জানতে চান? যদি তা হয় তবে এটি ব্যবহার করে দেখুন:

import os
import tempfile

with tempfile.TemporaryDirectory() as tmp_dir:
    # generate some random files in it
     files_in_dir = os.listdir(tmp_dir)
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.