Necə Python-da iç içə bir kataloq yarada bilərəm?

Bir dosyanın yazılacağı bir kataloq var və yoxsa, Python istifadə edərək bir kataloq yaratmaq üçün ən zərif bir üsul nədir? İşdə budur:

 import os file_path = "/my/directory/filename.txt" directory = os.path.dirname(file_path) try: os.stat(directory) except: os.mkdir(directory) f = file(filename) 

os.path.exists (təşəkkür edirəm, Kanya, Blair və Douglas). İndi budur:

 def ensure_dir(file_path): directory = os.path.dirname(file_path) if not os.path.exists(directory): os.makedirs(directory) 

Avtomatik olaraq bunu "açıq" edən bir bayraq varmı?

3113
07 нояб. Parand 07 Noyabrda təyin olundu. 2008-11-07 21:56 '08 at 21:56 2008-11-07 21:56
@ 28 cavab

Yaxşı keyfiyyətləri olan iki cavab görürəm, hər biri bir az qüsur var, buna görə də onu özünə götürsün:

os.path.exists edin və os.makedirs üçün os.makedirs hesab edin.

 import os if not os.path.exists(directory): os.makedirs(directory) 

os.path.exists və digər yerlərdə qeyd edildiyi kimi, bir yarış vəziyyəti var - əgər os.path.existsos.makedirs çağırışları arasında os.path.exists , os.makedirs ilə başa çatır. Təəssüf ki, OSError və davam edən etibarlı deyil, çünki qeyri- OSError icazələr, tam disk və s.

Bir variant OSError və daxili hata kodunu yoxlamaq (bax: Pythons OSError-dan məlumat almaq üçün cross-platform yolu var ):

 import os, errno try: os.makedirs(directory) except OSError as e: if e.errno != errno.EEXIST: raise 

Alternativ olaraq, bir ikinci os.path.exists ola bilər, amma bir os.path.exists ilk os.path.exists sonra os.path.exists yaratdığını os.path.exists , sonra isə ikincidən silinir - hələ də aldanmaq olardı.

Tətbiqdən asılı olaraq eyni vaxtda əməliyyatların təhlükəsi, fayl icazələri kimi digər amillər tərəfindən yaranan təhlükədən daha çox və ya az ola bilər. Geliştirici, bir tətbiq seçilməzdən əvvəl hazırlanan xüsusi tətbiq və gözlənilən mühit haqqında daha çox məlumat əldə etməlidir.

3845
07 нояб. Blair Conrad tərəfindən verilmiş cavab 07 Nov. 2008-11-07 22:06 '08 at 10:06 pm 2008-11-07 22:06

Python 3. 5+:

 import pathlib pathlib.Path('/my/directory').mkdir(parents=True, exist_ok=True) 

pathlib.Path.mkdir , yuxarıda istifadə pathlib.Path.mkdir kimi, recursively bir kataloq yaradır və zaten mövcud olan bir istisna pathlib.Path.mkdir . Əgər ehtiyacınız yoxdursa və ya valideynlərinizin yaradılmasını istəməsəniz, parents arqumentini atlayın.

Python 3. 2+:

pathlib istifadə:

border=0

pathlib adlandırılan pathlib2 adını pathlib2 . pathlib adlı köhnə yedek faylını quraşdırmayın. Sonra yuxarıda Python 3 5+ bölməsinə baxın və eyni şəkildə istifadə edin.

Python 3.4-dən istifadə pathlib , pathlib gəldikdə belə, mövcud bir variant exist_ok . Backport, bu itkin variantı olan mkdir daha yeni və daha yaxşı tətbiq edilməsi üçün nəzərdə tutulmuşdur.

os istifadə:

 import os os.makedirs(path, exist_ok=True) 

os.makedirs yuxarıda istifadə os.makedirs kimi, recursively bir kataloq yaradır və zaten mövcud olan bir istisna os.makedirs . exist_ok Python 3 istifadə edərkən ixtiyari arqument exist_ok . 2 + default dəyər False . Bu arqument Python 2.x-da 2.7-də mövcud deyildir. Beləliklə, Python 2.7-də olduğu kimi manuel istisna işləməyə ehtiyac yoxdur.

Python 2. 7+:

pathlib istifadə:

border=0

pathlib adlandırılan pathlib2 adını pathlib2 . pathlib adlı köhnə yedek faylını quraşdırmayın. Sonra yuxarıda Python 3 5+ bölməsinə baxın və eyni şəkildə istifadə edin.

os istifadə:

 import os try: os.makedirs(path) except OSError: if not os.path.isdir(path): raise 

Sadəlövh həll ilk növbədə os.path.isdir sonra os.path.isdir istifadə edə bilər, yuxarıdakı həll iki əməliyyatın sırasını dəyişir. Eyni zamanda, bir dizin yaratmaq üçün təkrarlanan cəhdlə əlaqəli ümumi yarış vəziyyətinin qarşısını alır və ayrıca faylların dizinlərdən qeyri-müəyyənliyini aradan qaldırır.

Bir istisna tutmaq və errno istifadə errno məhdud fayda var errno , çünki OSError: [Errno 17] File exists , yəni. errno.EEXIST , hər iki fayl və qovluq üçün errno.EEXIST . Dizinin mövcud olub-olmadığını yoxlamaq daha etibarlıdır.

Alternativ:

mkpath yaradır və mkpath zaten varsa, heç nə etməz. Bu da Python 2 və 3-də işləyir.

 import distutils.dir_util distutils.dir_util.mkpath(path) 

Per Bug 10948 , bu alternativin ciddi bir məhdudlaşdırılması yalnız bir dəfə python prosesi üçün müəyyən bir yol üçün işləyir. Başqa sözlə, əgər bir kataloq yaratmaq üçün istifadə mkpath , Python içərisindən və ya xaricindən bir qovluğu silin, sonra mkpath ı eyni qovluğu yenidən yaratmaq üçün istifadə edin, mkpath yalnız səssizcə əvvəlcədən yaradılan nə ilə bağlı mkpath məlumatları istifadə edir və həqiqətən də kataloq yenidən açılmayacaq. Əksinə, os.makedirs belə bir önbelleğe güvənmir. Bu məhdudiyyət bəzi tətbiqlər üçün gözəl ola bilər.


Dizin rejiminə gəldikdə, istədiyiniz sənədlərə baxın.

879
16 янв. Cavab 16 yanvarda ABB tərəfindən verilir . 2013-01-16 20:31 '13 'da saat 8:31 ' de 2013-01-16 20:31

Errno modulundan başqa, cəhddən istifadə edərək düzgün səhv kodu yarış vəziyyətindən xilas olur və cross-platformadır:

 import os import errno def make_sure_path_exists(path): try: os.makedirs(path) except OSError as exception: if exception.errno != errno.EEXIST: raise 

Başqa sözlə, biz dizinler yaratmağa çalışırıq, amma artıq varsa, səhvləri görmürük. Digər tərəfdən, başqa bir səhv bildirilir. Misal üçün əvvəlcədən bir 'a' yaratmaq və ondan bütün icazələri aradan qaldırmaq istəyirsinizsə, OSError ilə qaldırılan bir OSError əldə errno.EACCES (icazəsi rədd edilmiş, səhv 13).

582
17 февр. Heikki Toivonen tərəfindən 17 Fevralda cevap verildi. 2011-02-17 20:17 '11 at 20:17 2011-02-17 20:17

os.path.isdir() əvəzinə test üçün os.path.isdir() istifadə edərək şəxsən məsləhət os.path.isdir() .

 >>> os.path.exists('/tmp/dirname') True >>> os.path.exists('/tmp/dirname/filename.etc') True >>> os.path.isdir('/tmp/dirname/filename.etc') False >>> os.path.isdir('/tmp/fakedirname') False 

Əgər varsa:

 >>> dir = raw_input(":: ") 

Və aptal user girişi:

 :: /tmp/dirname/filename.etc 

... os.makedirs() ilə os.path.exists() , bu argümanı os.makedirs() filename.etc adlı bir kataloqla sona os.path.exists() .

90
14 янв. Cavab yazı yazılır 14 yanvar. 2009-01-14 20:57 '09 da 20:57 2009-01-14 20:57

Check os.makedirs : (Bu, tam yolun mövcud olmasını təmin edir.)
Dizinin mövcud ola biləcəyi öhdəsindən gəlmək üçün OSError anlayasınız. (Əgər exist_ok False (default), hədəf kataloq zaten varsa OSError olur.)

 import os try: os.makedirs('./path/to/somewhere') except OSError: pass 
60
07 нояб. Cavab Douglas Mayle 07 noyabr tarixində verilir. 2008-11-07 22:01 '08 at 10:01 pm 2008-11-07 22:01

Bu vəziyyət haqqında əsas məlumatlar

Xüsusi bir yolda xüsusi bir fayl müəyyənləşdirirsiniz və faylın yolundan bir qovluq çəkəcəksiniz. Sonra, bir qovluğunuz olduğundan əmin olun, faylı oxumağa açmağa çalışın. Bu kodu şərh etmək:

 filename = "/my/directory/filename.txt" dir = os.path.dirname(filename) 

Daxili dir funksiyasını yenidən yazmamaq istəmirik. Bundan əlavə, filepath və ya bəlkə də fullfilepath filename adından daha yaxşı semantik bir addır, buna görə daha yaxşı olardı:

 import os filepath = '/my/directory/filename.txt' directory = os.path.dirname(filepath) 

Sizin əsas məqsədi başlanğıcda yazdığınız, yazmaq üçün olan bu faylın açılmasıdır, lakin oxumaq üçün fayl açan kimi, bu məqsədə əsasən (kodunuza əsasən) yaxınlaşırsınız:

 if not os.path.exists(directory): os.makedirs(directory) f = file(filename) 

Oxumaq üçün açılmağı düşünürəm

Niyə orada gözlədiyiniz fayl üçün bir kataloq yaratmaq və oxuya bilərsiniz?

Yalnız faylını açmağa çalışın.

 with open(filepath) as my_file: do_stuff(my_file) 

Heç bir qovluq və ya fayl IOError , müvafiq səhv nömrə ilə bir IOError əldə IOError : errno.ENOENT platforma nə olursa olsun doğru səhv nömrəsini göstərəcəkdir. İstəsəniz onu tuta bilərik, məsələn:

 import errno try: with open(filepath) as my_file: do_stuff(my_file) except IOError as error: if error.errno == errno.ENOENT: print 'ignoring error because directory or file is not there' else: raise 

Yazı üçün açıq olacağıq

Yəqin ki, istədiyiniz nədir.

Bu halda, ehtimal ki, hər hansı bir yarış şərtləri ilə qarşılaşmırıq. Belə ki, sizinlə eyni şeyi et, ancaq qeydiyyatdan keçmək üçün w rejimini (və ya əlavə etmək üçün) istifadə etmək lazımdır. Ayrıca faylları açmaq üçün kontekst menecerindən istifadə etmək üçün Pythonun ən yaxşı təcrübəsi.

 import os if not os.path.exists(directory): os.makedirs(directory) with open(filepath, 'w') as my_file: do_stuff(my_file) 

Ancaq, bütün məlumatlarını eyni kataloqda yerləşdirməyə çalışdığımız bir neçə Python prosesinə sahibik. Sonra bir kataloq yaratmaq üçün bir sual ola bilər. Bu halda, makedirs çağırışını bir makedirs başqa bir bloka əlavə etmək makedirs .

 import os import errno if not os.path.exists(directory): try: os.makedirs(directory) except OSError as error: if error.errno != errno.EEXIST: raise with open(filepath, 'w') as my_file: do_stuff(my_file) 
33
23 янв. Cavab 23 yanvarda Aaron Hall tərəfindən verildi . 2015-01-23 02:49 '15 at 2:49 2015-01-23 02:49

Python 3.5-də başlayaraq, pathlib.Path.mkdir bir exist_ok bayrağı var:

 from pathlib import Path path = Path('/my/directory/filename.txt') path.parent.mkdir(parents=True, exist_ok=True) # path.parent ~ os.path.dirname(path) 

Bu, recursively bir kataloq yaradır və zaten mövcud olan bir istisna yaratmaz.

( os.makedirs kimi python 3.2-dən bəri exists_ok bayrağına malikdir).

32
14 дек. Hiro qəhrəmanı cavab 14 dekabr. 2016-12-14 19:06 '16 at 19:06 2016-12-14 19:06

os.path.exists funksiyasını sınayın

 if not os.path.exists(dir): os.mkdir(dir) 
25
07 нояб. Cavab verildi 07 Noyabr. 2008-11-07 22:00 '08 saat 22: 00-da, 2008-11-07 22:00

Aşağıdakıları təyin etdim. Ancaq etibarlılığa tam əmin deyil.

 import os dirname = 'create/me' try: os.makedirs(dirname) except OSError: if os.path.exists(dirname): # We are nearly safe pass else: # There was an error on creation, so make sure we know about it raise 

İndi dediyim kimi, bu, həqiqətən də etibarlı deyil, çünki bu dövrdə onu yaradan bir kataloq və başqa bir proses yaratmamaq imkanı var.

24
08 нояб. Cavab Əli Afşar tərəfindən verilir 2008-11-08 00:23 '08 at 0:23 2008-11-08 00:23

Bir kataloq mövcud olub olmadığını yoxlayın və lazım olduqda yaradın?

Bunun birbaşa cavabı, digər istifadəçilər və ya proseslərin kataloqunuza daxil edilməsini gözləməyəcəyi bir sadə vəziyyəti qəbul etməkdir:

 if not os.path.exists(d): os.makedirs(d) 

və ya kataloqun yaradılması irqi şərtlərindən asılıdırsa (məsələn, yolun yoxlanılmasından sonra başqa bir şey varsa, onda belə ola bilərdi):

 import errno try: os.makedirs(d) except OSError as exception: if exception.errno != errno.EEXIST: raise 

Ancaq bəlkə də ən yaxşı yanaşma tempfile vasitəsilə temp tempfile istifadə edərək resursların məhdudlaşdırılması problemini tempfile :

 import tempfile d = tempfile.mkdtemp() 

İnternet sənədindən əsas məlumatlar:

 mkdtemp(suffix='', prefix='tmp', dir=None) User-callable function to create and return a unique temporary directory. The return value is the pathname of the directory. The directory is readable, writable, and searchable only by the creating user. Caller is responsible for deleting the directory when done with it. 

Python 3.5-də yeni: pathlib.Path ilə exist_ok

mkdir istifadə etmək üçün lazım olan çox sayda üsulla yeni Path obyekti (3.4-dən başlayaraq) var - bunlardan biri mkdir .

(Kontekst üçün mənim həftəlik hesabatı skript ilə izləyirəm.) Burada eyni verilənlər üçün gündə bir dəfədən çox vaxt qaçmaq üçün imkan verən script kodunun müvafiq hissələri.

Birincisi, müvafiq idxal:

 from pathlib import Path import tempfile 

İndi os.path.join ilə məşğul os.path.join ehtiyac yoxdur - yalnız yolun bir hissəsini / :

 directory = Path(tempfile.gettempdir()) / 'sodata' 

Sonra kataloq mövcud olduğundan əminəm - exist_ok arqumenti Python 3.5-də göstərilir:

 directory.mkdir(exist_ok=True) 

Sənədlərin müvafiq hissəsi:

exist_ok doğruysa, FileExistsError istisnaları məhdudlaşdırılacaq ( POSIX mkdir -p əmri POSIX mkdir -p ilə eyni davranış), ancaq son yol komponenti bir kataloq olmadan mövcud fayl deyilsə.

Burada bir az daha çox skriptdir - mənim vəziyyətimdə, yarış vəziyyətinə tabe deyiləm, orada kataloq (və ya faylları var) orada olmasını gözləyən yalnız bir proses var və mən kataloq silməyə çalışmıram.

 todays_file = directory / str(datetime.datetime.utcnow().date()) if todays_file.exists(): logger.info("todays_file exists: " + str(todays_file)) df = pd.read_json(str(todays_file)) 

Path obyektləri onları istifadə etmək üçün str yollarını gözləyən digər API-lərdən qabaq məcbur edilməlidir.

os.PathLike özünəməxsus baza sinifinin nümunələrini qəbul etmək üçün yenilənməsi tələb oluna bilər, os.PathLike .

17
23 янв. Cavab 23 yanvarda Aaron Hall tərəfindən verildi . 2015-01-23 02:45 '15 saat 02:45 'da 2015-01-23 02:45

Python 3.4-də siz də yeni pathlib modulunu istifadə edə bilərsiniz:

 from pathlib import Path path = Path("/my/directory/filename.txt") try: if not path.parent.exists(): path.parent.mkdir(parents=True) except OSError: # handle error; you can also catch specific errors like # FileExistsError and so on. 
15
11 марта '15 в 23:50 2015-03-11 23:50 Cavab Antti Haapala tərəfindən 11 Mart '15 'də saat 23:50' də verilir 2015-03-11 23:50

Müvafiq Python sənədləri EAFP kodlaşdırma stilindən istifadə etməyi təklif edir (icazə verməkdən asılı olaraq bağışlanma tələb etmək asandır) . Bu kod deməkdir

 try: os.makedirs(path) except OSError as exception: if exception.errno != errno.EEXIST: raise else: print "\nBE CAREFUL! Directory %s already exists." % path 

alternativdən daha yaxşıdır

 if not os.path.exists(path): os.makedirs(path) else: print "\nBE CAREFUL! Directory %s already exists." % path 

Sənəd bu məsələdə müzakirə edilən yarış şərtlərindən budur. Əlavə olaraq, başqaları qeyd etdiyimiz kimi, bir dəfə sorğu üçün istifadə olunan üstünlük iki dəfə deyil. Nəhayət, təklif olunan arqument, bəlkə də, bəzi hallarda ikinci kodun lehinədir - əgər ərizəçi tətbiqin mühitini bilirsə - yalnız proqramın xüsusi mühiti (və eyni zamanda digər nümunələri) təyin etdiyi xüsusi vəziyyətdə qoruya bilər. eyni proqram).

Buna baxmayaraq, bu, pis bir təcrübədir və uzunmüddətli işləməyinizə səbəb ola bilər. Məsələn, bir kataloq üçün icazə qoyduğumuz həqiqət, məqsədlərimiz üçün düzgün müəyyən edilmiş icazələrin göstərilməməsinə səbəb olmamalıdır. Ana kataloq müxtəlif icazə ilə quraşdırıla bilər. Ümumiyyətlə, proqram həmişə düzgün işləməlidir və proqramçı heç bir mühiti gözləməməlidir.

9
14 июля '14 в 18:29 2014-07-14 18:29 cavadias cavabını 14 İyulda '14 'də saat 18:29' də verəcək 2014-07-14 18:29

mkpath istifadə edə bilərsiniz

 # Create a directory and any missing ancestor directories. # If the directory already exists, do nothing. from distutils.dir_util import mkpath mkpath("test") 

Qeyd edək ki, ata-baba dizinləri də yaradacaqdır.

Python 2 və 3 üçün çalışır.

7
14 сент. 14 sentyabrda Dennis Golomazov tərəfindən verilmiş cavab. 2016-09-14 00:44 '16 'da 0:44 2016-09-14 00:44' də

Python3 -də os.makedirs os.makedirs quraşdırılmasını dəstəkləyir. Varsayılan dəyər False , yəni OSError zaten varsa OSError qaldırılacağı anlamına gelir. exist_ok True olaraq təyin exist_ok , OSError (kataloq mövcuddur) nəzərə alınmayacaq və OSError yaradılmayacaqdır.

 os.makedirs(path,exist_ok=True) 

Python2, os.makedirs quraşdırılmasını dəstəkləmir. Heikki-toivonen cavab olaraq bu yanaşmanı istifadə edə bilərsiniz:

 import os import errno def make_sure_path_exists(path): try: os.makedirs(path) except OSError as exception: if exception.errno != errno.EEXIST: raise 
7
04 янв. Cavab Jan 04 tərəfindən verilir 2017-01-04 01:33 '17 də 1:33 2017-01-04 01:33

os.path.exists() istifadə edirəm, bura bir kataloq yoxlamaq üçün yoxlamaq üçün istifadə edə biləcəyiniz bir Python 3 os.path.exists() , əgər mövcud deyilsə, yaradın və istənilən halda silin.

Istifadəçilər bir qovluğa daxil olmağı və asanlıqla dəyişdirilməsini istəməlidir.

6
09 февр. Cavab Michael Strobel tərəfindən verilmişdir 09 fevral. 2017-02-09 06:56 '17 də 6:56 2017-02-09 06:56

Bir xəttli həll üçün IPython.utils.path.ensure_dir_exists() istifadə edə bilərsiniz:

 from IPython.utils.path import ensure_dir_exists ensure_dir_exists(dir) 

Sənədlərdən : kataloq mövcud olduğundan əmin olun. Əgər mövcud deyilsə, başqa bir proses eyni olarsa, onu yaradın və onu yarış vəziyyətindən qoruyun.

6
29 марта '16 в 18:50 2016-03-29 18:50 cavab 29 mart '18 saat 18:50' də veriləcək

Heikki ToivonenABB- dən gələn cavabları gördüm və bu seçimi düşündüm.

 import os import errno def make_sure_path_exists(path): try: os.makedirs(path) except OSError as exception: if exception.errno != errno.EEXIST or not os.path.isdir(path): raise 
5
08 февр. cavab alissonmuller verildi 08 fevral. 2016-02-08 07:08 '16 at 7:08 2016-02-08 07:08

Bu Q / A tapdım və əvvəlcə mən aldığım bəzi uğursuzluqlar və səhvlər ilə təəccübləndim. Python 3-də (Arch Linux x86_64 sistemində Anaconda virtual mühitində v.3.5) işləyirəm.

Bu kataloq strukturunu nəzərdən keçirin:

 └── output/ ## dir ├── corpus ## file ├── corpus2/ ## dir └── subdir/ ## dir 

İşlərimə aydınlıq gətirən mənim təcrübələrim / qeydlərim:

 # ---------------------------------------------------------------------------- # [1] /questions/340/how-to-check-if-a-directory-exists-and-create-it-if-necessary import pathlib """ Notes: 1. Include a trailing slash at the end of the directory path ("Method 1," below). 2. If a subdirectory in your intended path matches an existing file with same name, you will get the following error: "NotADirectoryError: [Errno 20] Not a directory:" ... """ # Uncomment and try each of these "out_dir" paths, singly: # ---------------------------------------------------------------------------- # METHOD 1: # Re-running does not overwrite existing directories and files; no errors. # out_dir = 'output/corpus3' ## no error but no dir created (missing tailing /) # out_dir = 'output/corpus3/' ## works # out_dir = 'output/corpus3/doc1' ## no error but no dir created (missing tailing /) # out_dir = 'output/corpus3/doc1/' ## works # out_dir = 'output/corpus3/doc1/doc.txt' ## no error but no file created (os.makedirs creates dir, not files! ;-) # out_dir = 'output/corpus2/tfidf/' ## fails with "Errno 20" (existing file named "corpus2") # out_dir = 'output/corpus3/tfidf/' ## works # out_dir = 'output/corpus3/a/b/c/d/' ## works # [2] https://docs.python.org/3/library/os.html#os.makedirs # Uncomment these to run "Method 1": #directory = os.path.dirname(out_dir) #os.makedirs(directory, mode=0o777, exist_ok=True) # ---------------------------------------------------------------------------- # METHOD 2: # Re-running does not overwrite existing directories and files; no errors. # out_dir = 'output/corpus3' ## works # out_dir = 'output/corpus3/' ## works # out_dir = 'output/corpus3/doc1' ## works # out_dir = 'output/corpus3/doc1/' ## works # out_dir = 'output/corpus3/doc1/doc.txt' ## no error but creates a .../doc.txt./ dir # out_dir = 'output/corpus2/tfidf/' ## fails with "Errno 20" (existing file named "corpus2") # out_dir = 'output/corpus3/tfidf/' ## works # out_dir = 'output/corpus3/a/b/c/d/' ## works # Uncomment these to run "Method 2": #import os, errno #try: # os.makedirs(out_dir) #except OSError as e: # if e.errno != errno.EEXIST: # raise # ---------------------------------------------------------------------------- 

Nəticə: mənim fikrimcə "Metod 2" daha etibarlıdır.

[1] Necə bir kataloq yaratmaq olar?

[2] https://docs.python.org/3/library/os.html #os.makedirs

5
16 дек. Cavab Victoria Stuart tərəfindən verilmişdir 16 dekabr. 2017-12-16 07:16 '17 saat 07:16 'da 2017-12-16 07:16

Fayl I / O ilə işləyərkən nəzərə alınmalıdır

TOCTTOU (istifadən vaxtın yoxlanılması)

Beləliklə, sonradan oxumaq və ya yazmaqla yoxlanılması işlənməmiş I / O istisna gətirə bilər. Bunun ən yaxşı yolu:

 try: os.makedirs(dir_path) except OSError as e: if e.errno != errno.EEXIS: raise 
4
19 окт. ŞAHS tərəfindən verilmiş cavab 19 oktyabr 2017-10-19 17:09 '17 saat 17:09 'da 2017-10-19 17:09

os.listdir üçün os.listdir istifadə edə bilərsiniz:

 import os if 'dirName' in os.listdir('parentFolderPath') print('Directory Exists') 
4
08 июня '16 в 15:52 2016-06-08 15:52 Cavab iPhynx 08 iyun '15 saat 15:52 2016-06-08 15:52 verilir

Aşağıdakıları nəzərə alırsanız:

 os.path.isdir('/tmp/dirname') 

bir kataloq (yol) var və bir qovluq deməkdir. Buna görə mənim üçün bu yol mənə lazım olanı edir. Beləliklə, bu qovluğu (fayl deyil) əmin edə bilərsiniz.

2
03 дек. Cavab Ralph Schwerdt tərəfindən verilir 03 dekabr . 2016-12-03 19:00 '16 saat 19.00 'də 2016-12-03 19:00

Bir qovluğu yoxlamaq və yaratmaq üçün bu əmrdən istifadə edin.

  if not os.path.isdir(test_img_dir): os.mkdir(str("./"+test_img_dir)) 
1
16 апр. Cavab 16 aprel tarixində Manivannan Murugavel tərəfindən verilmişdir. 2018-04-16 10:30 '18 saat 10:30 'da 2018-04-16 10:30' a qədər

Shell dillərini dəstəkləyən bir maşın üzərində çalışan bir subprocess modulunu istifadə etməyin? Python 2.7 və python 3.6 ilə təchiz edilmişdir

 from subprocess import call call(['mkdir', '-p', 'path1/path2/path3']) 

Çox sistemdə hiylə olmalıyıq.

1
11 сент. Sep 11-də Geoff Paul Bremner tərəfindən verilmiş cavab 2018-09-11 21:23 '18 at 21:23 2018-09-11 21:23

create_dir() funksiyasını proqram / proyektinizin giriş nöqtəsində çağırın.

 import os def create_dir(directory): if not os.path.exists(directory): print('Creating Directory '+directory) os.makedirs(directory) create_dir('Project directory') 
1
28 апр. Steffi Keran Rani J tərəfindən verilmiş cavab 28 Apr. 2018-04-28 19:00 '18 saat 19.00 'də 2018-04-28 19:00' də

Bununla necə?

 import os import errno def make_sure_path_exists(path): try: os.makedirs(path) except OSError as exception: if exception.errno != errno.EEXIST: raise 
0
15 нояб. Cavab Akash Nayak 15 noyabrda verilir. 2017-11-15 13:33 '17 saat 13:33 'də 2017-11-15 13:33
 import os os.system("mkdir -p ./testdir") 

-p sizin üçün bütün işləri edir, nə üçün bu cəhd / tutma proqramı ilə narahat olun, linux və windows powershell uzun illərdir mkdir-p var. Bir jurnal və ya ekranda məlumatı istəsəniz, yoxlamaq lazımdır.

0
29 авг. 29 Avqustda Eamonn Kenny tərəfindən verilmiş cavab . 2016-08-29 14:34 '16 saat 02:34 'da 2016-08-29 14:34
 import os if os.path.isfile(filename): print "file exists" else: "Your code here" 

Burada əmrinizdə istifadə etdiyiniz kodunuz (toxunma)

Fayl yoxsa yoxsa yoxsa yoxsa sonra yaradır.

-1
06 июля '17 в 2:15 2017-07-06 02:15 Cavab Evil tərəfindən verilir 06 iyul '2 saat 2:15 2017-07-06 02:15
 import os if not os.path.isfile("test") and not os.path.isdir("test"): os.mkdir("test") 
-2
02 сент. Cavab c4f4t0r verildi 02 Sentyabr. 2013-09-02 00:04 '13 'da 0:04 2013-09-02 00:04