නාමාවලිය එහි නොමැති නම් එය නිර්මාණය කිරීමටද ඔබට අවශ්ය විය හැකිය.
මූලාශ්රය , එය තවමත් SO හි තිබේ නම්.
============================================= ===================
පයිතන් ≥ 3.5 හි, භාවිතා කරන්න pathlib.Path.mkdir
:
from pathlib import Path
Path("/my/directory").mkdir(parents=True, exist_ok=True)
පයිතන්ගේ පැරණි සංස්කරණ සඳහා, හොඳ ගුණාංග සහිත පිළිතුරු දෙකක් මම දකිමි, සෑම එකක්ම කුඩා අඩුපාඩුවක් ඇත, එබැවින් මම එය භාර ගනිමි:
උත්සාහ කරන්න os.path.exists
, සහ os.makedirs
නිර්මාණය සඳහා සලකා බලන්න .
import os
if not os.path.exists(directory):
os.makedirs(directory)
අදහස් දැක්වීම්වල සහ වෙනත් තැන්වල සඳහන් කර ඇති පරිදි, තරඟ කොන්දේසියක් ඇත - os.path.exists
සහ os.makedirs
ඇමතුම් අතර නාමාවලිය නිර්මාණය කර ඇත්නම් , ඒ os.makedirs
සමඟ අසමත් වනු ඇත OSError
. අවාසනාවට, බ්ලැන්කට් ඇල්ලීමOSError
සහ ඉදිරියට යාම මෝඩකමක් නොවේ, මන්ද එය ප්රමාණවත් නොවන අවසර, සම්පූර්ණ තැටිය වැනි වෙනත් සාධක නිසා නාමාවලිය නිර්මාණය කිරීමට අපොහොසත් වනු ඇත.
එක් විකල්පයක් වනුයේ OSError
කාවැද්දූ දෝෂ කේතය පරීක්ෂා කර බැලීමයි (බලන්න පයිතන්ගේ OSError වෙතින් තොරතුරු ලබා ගැනීමේ හරස් වේදිකා ක්රමයක් තිබේද ):
import os, errno
try:
os.makedirs(directory)
except OSError as e:
if e.errno != errno.EEXIST:
raise
විකල්පයක් ලෙස, තත්පරයක් තිබිය හැකිය os.path.exists
නමුත්, පළමු චෙක්පතෙන් පසුව තවත් අයෙකු නාමාවලිය නිර්මාණය කර, දෙවන පරීක්ෂණයට පෙර එය ඉවත් කළා යැයි සිතමු - අප තවමත් රැවටිය හැකිය.
යෙදුම මත පදනම්ව, සමගාමී මෙහෙයුම් වල අන්තරාය ගොනු අවසර වැනි වෙනත් සාධක මගින් ඇති වන අන්තරායට වඩා වැඩි හෝ අඩු විය හැකිය. ක්රියාත්මක කිරීමක් තෝරා ගැනීමට පෙර සංවර්ධකයාට විශේෂිත යෙදුම සහ එහි අපේක්ෂිත පරිසරය ගැන වැඩි විස්තර දැනගත යුතුය.
පයිතන්ගේ නවීන අනුවාදයන් නිරාවරණය කිරීමෙන් FileExistsError
(3.3 + දී) මෙම කේතය තරමක් දියුණු කරයි ...
try:
os.makedirs("path/to/directory")
except FileExistsError:
# directory already exists
pass
... සහ (3.2+ දී) මූල පද තර්කයක් os.makedirs
කැඳවීමටexist_ok
ඉඩ දීමෙන් .
os.makedirs("path/to/directory", exist_ok=True) # succeeds even if directory exists.
os.stat
ඩිරෙක්ටරිය දෙකම පවතින්නේද සහ එකම මොහොතේ ඩිරෙක්ටරියක්ද යන්න බැලීමට ඔබට ඒ වෙනුවට ක්රියා කිරීමට අවශ්ය විය හැකිය .