පයිතන් 3.5+:
import pathlib
pathlib.Path('/my/directory').mkdir(parents=True, exist_ok=True)
pathlib.Path.mkdir
ඉහත භාවිතා කළ පරිදි පුනරාවර්තන ලෙස නාමාවලිය නිර්මාණය වන අතර නාමාවලිය දැනටමත් තිබේ නම් ව්යතිරේකයක් මතු නොකරයි. දෙමව්පියන් මැවීම ඔබට අවශ්ය නැතිනම් අවශ්ය නොවේ නම්, parents
තර්කය මඟ හරින්න .
පයිතන් 3.2+:
භාවිතා කිරීම pathlib
:
ඔබට හැකි නම්, නම් කර ඇති වර්තමාන pathlib
පසුපෙළ ස්ථාපනය කරන්න pathlib2
. නම් කර ඇති පැරණි නොදන්නා පසුපෙළ ස්ථාපනය නොකරන්න pathlib
. ඊළඟට, ඉහත පයිතන් 3.5+ කොටස වෙත යොමු වී එය භාවිතා කරන්න.
පයිතන් 3.4 භාවිතා කරන්නේ නම්, එය පැමිණියද pathlib
, එය ප්රයෝජනවත් exist_ok
විකල්පය මග හැරී ඇත. mkdir
මෙම අතුරුදහන් වූ විකල්පය ඇතුළත් නව හා උසස් ක්රියාත්මක කිරීමක් බැක්පෝට් හි අරමුණයි .
භාවිතා කිරීම os
:
import os
os.makedirs(path, exist_ok=True)
os.makedirs
ඉහත භාවිතා කළ පරිදි පුනරාවර්තන ලෙස නාමාවලිය නිර්මාණය වන අතර නාමාවලිය දැනටමත් තිබේ නම් ව්යතිරේකයක් මතු නොකරයි. එයට විකල්ප exist_ok
තර්කය ඇත්තේ පෙරනිමි අගය සහිත පයිතන් 3.2+ භාවිතා කරන්නේ නම් පමණි False
. මෙම තර්කය පයිතන් 2.x හි 2.7 දක්වා නොපවතී. එනිසා, පයිතන් 2.7 මෙන් අතින් ව්යතිරේක හැසිරවීමේ අවශ්යතාවයක් නොමැත.
පයිතන් 2.7+:
භාවිතා කිරීම pathlib
:
ඔබට හැකි නම්, නම් කර ඇති වර්තමාන pathlib
පසුපෙළ ස්ථාපනය කරන්න pathlib2
. නම් කර ඇති පැරණි නොදන්නා පසුපෙළ ස්ථාපනය නොකරන්න pathlib
. ඊළඟට, ඉහත පයිතන් 3.5+ කොටස වෙත යොමු වී එය භාවිතා කරන්න.
භාවිතා කිරීම os
:
import os
try:
os.makedirs(path)
except OSError:
if not os.path.isdir(path):
raise
බොළඳ විසඳුමක් මුලින්ම භාවිතා os.path.isdir
කළ හැකි අතර os.makedirs
, ඉහත විසඳුම මෙහෙයුම් දෙකේ අනුපිළිවෙල ආපසු හරවයි. එසේ කිරීමෙන්, නාමාවලිය නිර්මාණය කිරීමේ අනුපිටපත් උත්සාහයක් සමඟ පොදු තරඟ තත්වයක් ඇතිවීම වළක්වන අතර, නාමාවලි වලින් ලිපිගොනු අවලංගු කරයි.
ව්යතිරේකය ග්රහණය කර ගැනීම සහ භාවිතා errno
කිරීම සීමිත ප්රයෝජනයක් ඇති බව සලකන්න OSError: [Errno 17] File exists
, එනම් errno.EEXIST
ලිපිගොනු සහ නාමාවලි සඳහාම මතු කර ඇත. නාමාවලිය තිබේදැයි පරීක්ෂා කිරීම වඩාත් විශ්වාසදායකය.
විකල්ප:
mkpath
කැදැලි නාමාවලිය සාදයි, සහ නාමාවලිය දැනටමත් තිබේ නම් කිසිවක් නොකරයි. මෙය පයිතන් 2 සහ 3 යන දෙකින්ම ක්රියා කරයි.
import distutils.dir_util
distutils.dir_util.mkpath(path)
එක් බග් 10948 , මේ විකල්ප ක බැදීමද එය ලබා දී මාර්ගය සඳහා එක් වරක් පමණක් පිඹුරා ක්රියාවලිය අනුව ක්රියා කිරීමයි. වෙනත් වචන වලින් කිවහොත්, ඔබ එය ඩිරෙක්ටරියක් සෑදීමට භාවිතා කරන්නේ නම්, පයිතන් ඇතුළත හෝ පිටත සිට ඩිරෙක්ටරිය මකා දමන්න, ඉන්පසු එම ඩිරෙක්ටරිය mkpath
නැවත ප්රතිනිර්මාණය කිරීමට නැවත mkpath
භාවිතා කරන්න, කලින් ඩිරෙක්ටරිය නිර්මාණය කළ එහි අවලංගු හැඹිලි තොරතුරු නිහ ly ව භාවිතා කරනු ඇත, ඇත්ත වශයෙන්ම නැවත නාමාවලිය සාදන්න. ඊට වෙනස්ව, os.makedirs
එවැනි හැඹිලියක් මත රඳා නොසිටින්න. සමහර යෙදුම් සඳහා මෙම සීමාව හොඳ විය හැකිය.
නාමාවලි මාදිලිය සම්බන්ධයෙන් , කරුණාකර ඔබ ඒ ගැන සැලකිලිමත් වන්නේ නම් ප්රලේඛනය වෙත යොමු වන්න.