temp
পাইথন ২.6-তে ডিরেক্টরিটি পাওয়ার কোনও ক্রস-প্ল্যাটফর্ম উপায় আছে ?
উদাহরণস্বরূপ, লিনাক্সের /tmp
অধীনে যা XP এর অধীনে থাকবেC:\Documents and settings\[user]\Application settings\Temp
।
temp
পাইথন ২.6-তে ডিরেক্টরিটি পাওয়ার কোনও ক্রস-প্ল্যাটফর্ম উপায় আছে ?
উদাহরণস্বরূপ, লিনাক্সের /tmp
অধীনে যা XP এর অধীনে থাকবেC:\Documents and settings\[user]\Application settings\Temp
।
উত্তর:
এটি অস্থিরতা মডিউল হবে।
অস্থায়ী ডিরেক্টরি পাওয়ার জন্য এটির কার্যকারিতা রয়েছে এবং এতে নাম বা নামবিহীন নামে অস্থায়ী ফাইল এবং ডিরেক্টরিগুলি তৈরি করতে কিছু শর্টকাটও রয়েছে।
উদাহরণ:
import tempfile
print tempfile.gettempdir() # prints the current temporary directory
f = tempfile.TemporaryFile()
f.write('something on temporaryfile')
f.seek(0) # return to beginning of file
print f.read() # reads data back from the file
f.close() # temporary file is automatically deleted here
সম্পূর্ণতার জন্য, ডকুমেন্টেশন অনুযায়ী এটি কীভাবে অস্থায়ী ডিরেক্টরিটি অনুসন্ধান করে তা এখানে:
TMPDIR
পরিবেশের পরিবর্তনশীল দ্বারা পরিচালিত ডিরেক্টরি ।TEMP
পরিবেশের পরিবর্তনশীল দ্বারা পরিচালিত ডিরেক্টরি ।TMP
পরিবেশের পরিবর্তনশীল দ্বারা পরিচালিত ডিরেক্টরি ।Wimp$ScrapDir
এনভায়রনমেন্ট ভেরিয়েবল।C:\TEMP
, C:\TMP
, \TEMP
, এবং \TMP
, যাতে।/tmp
, /var/tmp
এবং /usr/tmp
, যাতে।tempfile.gettempdir()
সমাধান করে C:\users\user\AppData\Local\Temp
। দুর্ভাগ্যক্রমে দীর্ঘ পথ।
এটি আপনার যা করা উচিত তা করা উচিত:
print tempfile.gettempdir()
আমার উইন্ডোজ বাক্সে আমার কাছে,
c:\temp
এবং আমার লিনাক্স বাক্সে আমি পেয়েছি:
/tmp
আমি ব্যবহার করি:
from pathlib import Path
import platform
import tempfile
tempdir = Path("/tmp" if platform.system() == "Darwin" else tempfile.gettempdir())
এটি ম্যাকওএসের উপর, অর্থাত ডারউইনের উপর, tempfile.gettempdir()
এবং os.getenv('TMPDIR')
যেমন একটি মান ফেরত দেয় '/var/folders/nj/269977hs0_96bttwj2gs_jhhp48z54/T'
; এটি এমন একটি যা আমি সবসময় চাই না।
@ নসক্লোর মন্তব্য এবং উত্তরের উপর ভিত্তি করে সরলতম উপায় :
import tempfile
tmp = tempfile.mkdtemp()
তবে আপনি যদি নিজে থেকেই ডিরেক্টরিগুলি তৈরি করতে চান:
import os
from tempfile import gettempdir
tmp = os.path.join(gettempdir(), '.{}'.format(hash(os.times())))
os.makedirs(tmp)
আপনি যখন কাজটি সম্পন্ন করেন (গোপনীয়তা, সংস্থানসমূহ, সুরক্ষা, যাই হোক না কেন) এর সাথে আপনি নিজের পরে সহজেই পরিষ্কার করতে পারেন:
from shutil import rmtree
rmtree(tmp, ignore_errors=True)
এটি গুগল ক্রোম এবং লিনাক্সের মতো অ্যাপ্লিকেশনগুলির মতো systemd
। তাদের উপস্থিতি "বিজ্ঞাপন" দেওয়ার জন্য তারা কেবল একটি সংক্ষিপ্ত হেক্স হ্যাশ এবং একটি অ্যাপ্লিকেশন-নির্দিষ্ট উপসর্গ ব্যবহার করে।
tempfile.mkdtemp()
পরিবর্তে আপনার ব্যবহার করা উচিত
mkdtemp()
আপনার প্রস্তাবিত একটি আরও স্পষ্ট, আরও নমনীয় সংস্করণ ।