පයිතන් 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එවැනි හැඹිලියක් මත රඳා නොසිටින්න. සමහර යෙදුම් සඳහා මෙම සීමාව හොඳ විය හැකිය.
නාමාවලි මාදිලිය සම්බන්ධයෙන් , කරුණාකර ඔබ ඒ ගැන සැලකිලිමත් වන්නේ නම් ප්රලේඛනය වෙත යොමු වන්න.