Kako mogu sigurno stvoriti ugniježđeni direktorij u Pythonu?

Koji je najelegantniji način provjeriti postoji li direktorij u kojem će se datoteka napisati, a ako ne, stvoriti direktorij pomoću Pythona? Evo što sam pokušao:

 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) 

Nekako sam propustio os.path.exists (hvala, kanya, Blair i Douglas). To je ono što sada imam:

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

Postoji li zastavica za "otvoreno" koja to radi automatski?

3113
07 нояб. Parand je postavljen 07. studenog. 2008-11-07 21:56 '08 u 21:56 2008-11-07 21:56
@ 28 odgovora

Vidim dva odgovora s dobrim kvalitetama, od kojih svaki ima malu manu, pa ću mu dopustiti da ga uzme na sebe:

Pokušajte os.path.exists i uzeti u obzir os.makedirs za stvaranje.

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

Kao što je navedeno u komentarima i drugdje, postoji uvjet utrke - ako je imenik kreiran između os.path.exists i os.makedirs poziva, os.makedirs završava s OSError . Nažalost, OSError i kontinuirano nisu pouzdani, jer će zanemariti nemogućnost stvaranja direktorija zbog drugih čimbenika, kao što su nedovoljne dozvole, puni disk itd.

Jedna mogućnost je OSError i ispitati ugrađeni kod pogreške (pogledajte. Postoji li način za dobivanje informacija iz Pythons OSError-a ):

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

Alternativno, može postojati drugi os.path.exists , ali pretpostavimo da je drugi stvorio direktorij nakon prve provjere, a zatim ga izbrisao prije drugog - mogli bismo i dalje biti prevareni.

Ovisno o primjeni, opasnost od istovremenih operacija može biti veća ili manja od opasnosti koju predstavljaju drugi čimbenici, kao što su dozvole za datoteke. Programer će morati saznati više o određenoj aplikaciji koja se razvija i očekivanom okruženju prije nego što odabere implementaciju.

3845
07 нояб. Odgovor Blaira Conrada 07 Nov. 2008-11-07 22:06 '08 u 22:06 2008-11-07 22:06

Python 3. 5+:

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

pathlib.Path.mkdir kao što se koristi gore, rekurzivno kreira direktorij i ne podiže iznimku ako direktorij već postoji. Ako ne trebate ili želite da se vaši roditelji kreiraju, preskočite argument parents .

Python 3. 2+:

Upotreba pathlib :

border=0

Ako možete, postavite trenutnu pathlib nazvanu pathlib2 . Nemojte instalirati staru datoteku sigurnosne kopije nazvanu pathlib . Zatim pogledajte gornji odjeljak Python 3. 5+ i koristite ga isto.

Ako koristite Python 3.4, čak i ako dolazi s pathlib , ne postoji korisna opcija exist_ok . Backport je dizajniran za noviju i bolju implementaciju mkdir koja uključuje tu opciju koja nedostaje.

Korištenje os :

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

os.makedirs kao što se koristi gore, rekurzivno kreira direktorij i ne podiže iznimku ako direktorij već postoji. Ima opcionalni argument exist_ok samo kada koristi Python 3. 2+ sa zadanom vrijednošću False . Ovaj argument ne postoji u Pythonu 2.x do 2.7. Dakle, nema potrebe za ručnim rukovanjem iznimkama, kao u Pythonu 2.7.

Python 2. 7+:

Upotreba pathlib :

border=0

Ako možete, postavite trenutnu pathlib nazvanu pathlib2 . Nemojte instalirati staru datoteku sigurnosne kopije nazvanu pathlib . Zatim pogledajte gornji odjeljak Python 3. 5+ i koristite ga isto.

Korištenje os :

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

Dok naivno rješenje može najprije koristiti os.path.isdir nakon čega slijedi os.makedirs , gore navedeno rješenje mijenja redoslijed tih dviju operacija. U isto vrijeme, sprječava opće stanje utrke povezano s dvostrukim pokušajem stvaranja direktorija, te također eliminira nejasnoće datoteka iz direktorija.

Primijetite da hvatanje iznimke i korištenje errno ima ograničenu korisnost, budući da OSError: [Errno 17] File exists , tj. errno.EEXIST , errno.EEXIST za datoteke i direktorije. Pouzdanije je jednostavno provjeriti postoji li direktorij.

alternativa:

mkpath kreira ugniježđeni direktorij i ne čini ništa ako direktorij već postoji. To radi na oba Pythona 2 i 3.

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

Po Bug 10948 , ozbiljno ograničenje ove alternative je da radi samo jednom po python procesu za određenu stazu. Drugim riječima, ako ga upotrijebite za izradu direktorija, a zatim izbrišete direktorij unutar ili izvan Pythona, a zatim ponovno upotrijebite mkpath ponovno stvaranje istog direktorija, mkpath samo tiho koristi svoje nevažeće predmemorirane informacije o tome što je prethodno stvorio i stvarno neće ponovno napraviti direktorij. Nasuprot tome, os.makedirs se ne oslanja na takvu predmemoriju. Ovo ograničenje može biti u redu za neke aplikacije.


Što se tiče režima direktorija, pogledajte dokumentaciju ako vam se sviđa.

879
16 янв. Odgovor je dao ABB 16. siječnja. 2013-01-16 20:31 '13 u 20:31 2013-01-16 20:31

Upotreba try-a i ispravan kod pogreške iz modula errno oslobađa se uvjeta utrke i predstavlja cross-platformu:

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

Drugim riječima, pokušavamo stvoriti direktorije, ali ako već postoje, zanemarujemo pogrešku. S druge strane, javlja se bilo koja druga pogreška. Na primjer, ako unaprijed stvorite dir 'a' i uklonite sve dozvole iz njega, dobit ćete OSError podignut s errno.EACCES (Dopuštenje je odbijeno, pogreška 13).

582
17 февр. odgovor Heikki Toivonen 17. veljače. 2011-02-17 20:17 '11 u 20:17 2011-02-17 20:17

Osobno bih preporučio korištenje os.path.isdir() za testiranje umjesto os.path.exists() .

 >>> 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 

Ako imate:

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

I blesavi korisnički unos:

 :: /tmp/dirname/filename.etc 

... os.makedirs() ćete s imenikom filename.etc , kada proslijedite ovaj argument os.makedirs() , ako provjerite s os.path.exists() .

90
14 янв. odgovor je dan krimonosni 14 jan. 2009-01-14 20:57 '09 u 20:57 2009-01-14 20:57

Provjerite os.makedirs : (Time se osigurava da cijeli put postoji.)
Da biste se nosili s činjenicom da direktorij može postojati, razumite OSError. (Ako je exist_ok False (zadano), OSError se pojavljuje ako ciljni direktorij već postoji.)

 import os try: os.makedirs('./path/to/somewhere') except OSError: pass 
60
07 нояб. odgovor je dao Douglas Mayle 07 Nov. 2008-11-07 22:01 '08 u 22:01 2008-11-07 22:01

Osnovne informacije o ovoj situaciji

Određenu datoteku navedete na određenoj stazi, a direktorij povlačite iz putanje u datoteku. Zatim, pazeći da imate direktorij, pokušavate otvoriti datoteku za čitanje. Da biste komentirali ovaj kôd:

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

Želimo izbjeći prepisivanje ugrađene funkcije dir . Osim toga, filepath ili možda fullfilepath je vjerojatno bolji semantički naziv od filename , tako da bi bilo bolje napisati:

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

Vaš krajnji cilj je otvoriti ovu datoteku, koju ste prvotno odredili, za pisanje, ali u suštini se približavate tom cilju (na temelju svog koda), onakvom kakav jest, koji otvara datoteku za čitanje :

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

Pretpostavljajući otvaranje za čitanje

Zašto stvarate direktorij za datoteku koju očekujete tamo i možete čitati?

Samo pokušajte otvoriti datoteku.

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

Ako nema direktorija ili datoteke, dobit ćete IOError s odgovarajućim brojem pogreške: errno.ENOENT će naznačiti točan broj pogreške, bez obzira na vašu platformu. Možete ga uhvatiti ako želite, na primjer:

 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 ne postoji” 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 

Pretpostavimo da smo otvoreni za pisanje

Ovo je vjerojatno ono što želite.

U ovom slučaju, vjerojatno se ne suočavamo s uvjetima utrke. Zato napravite istu stvar kao i vi, ali imajte na umu da za snimanje trebate otvoriti pomoću moda w (ili a za dodavanje). To je također Pythonova najbolja praksa za korištenje kontekstnog upravitelja za otvaranje datoteka.

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

Međutim, recimo da imamo nekoliko Python procesa koji pokušavaju staviti sve njihove podatke u isti direktorij. Tada ćemo možda imati pitanje o stvaranju direktorija. U ovom slučaju, najbolje je priložiti poziv proizvođača u blok za pokušaj.

 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 янв. Odgovor je dao Aaron Hall 23. siječnja. 2015-01-23 02:49 '15 u 2:49 2015-01-23 02:49

Počevši od Pythona 3.5, pathlib.Path.mkdir ima oznaku exist_ok :

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

To rekurzivno stvara direktorij i ne podiže iznimku ako direktorij već postoji.

(baš kao i os.makedirs dobio zastavicu exists_ok od exists_ok 3.2).

32
14 дек. Hiro protagonist odgovori 14 dec. 2016-12-14 19:06 '16 u 19:06 2016-12-14 19:06

Pokušajte funkciju os.path.exists

 if not os.path.exists(dir): os.mkdir(dir) 
25
07 нояб. odgovor je dan 7. studenog. 2008-11-07 22:00 '08 u 22:00 2008-11-07 22:00

Postavio sam sljedeće. Međutim, on nije posve siguran u pouzdanost.

 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 

Sada, kao što sam rekao, to nije stvarno pouzdano, jer imamo mogućnost da ne stvaramo imenik i drugi proces koji ga stvara u tom razdoblju.

24
08 нояб. odgovor je dao Ali Afshar Nov 08 2008-11-08 00:23 '08 u 0:23 2008-11-08 00:23

Provjerite postoji li direktorij i stvorite ga ako je potrebno?

Izravan odgovor na to je prihvatiti jednostavnu situaciju u kojoj ne očekujete da drugi korisnici ili procesi unesu vaš direktorij:

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

ili , ako izrada kataloga ovisi o uvjetima utrke (tj. ako nešto drugo postoji nakon provjere staze, to je možda već učinjeno):

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

Ali možda je čak i najbolji pristup zaobilaženje problema ograničavanja resursa pomoću privremenih direktorija kroz tempfile :

 import tempfile d = tempfile.mkdtemp() 

Evo osnovnih informacija iz online dokumenta:

 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. 

Novo u Pythonu 3.5: pathlib.Path sa exist_ok

Postoji novi objekt Path (počevši od 3.4) s velikim brojem metoda koje se moraju koristiti s putanjama - od kojih je jedan mkdir .

(Za kontekst pratim svoj tjedni izvještaj sa skriptom. Evo relevantnih dijelova koda skripte koji mi omogućuju da izbjegnem više od jednom dnevno za iste podatke.)

Prvo, odgovarajući uvoz:

 from pathlib import Path import tempfile 

Sada se ne trebamo baviti os.path.join - samo dodajte dijelove puta pomoću / :

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

Tada sam siguran da direktorij postoji - argument argumenta exist_ok prikazan je u Pythonu 3.5:

 directory.mkdir(exist_ok=True) 

Ovdje je relevantni dio dokumentacije :

Ako je exist_ok istina, iznimke FileExistsError će se zanemariti (isto ponašanje kao POSIX mkdir -p naredba POSIX mkdir -p ), ali samo ako posljednja komponenta staze nije postojeća datoteka bez direktorija.

Evo malo više skripte - u mom slučaju, ne podliježem uvjetima utrke, imam samo jedan proces koji očekuje da će direktorij (ili datoteke sadržane) biti tamo, i neću pokušati izbrisati direktorij.

 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)) 

Objekti Path moraju biti prisiljeni str Prije drugih API-ja koji ih očekuju da ih koriste.

Pande će možda trebati ažurirati kako bi se prihvatile instance apstraktne osnovne klase, os.PathLike .

17
23 янв. Odgovor je dao Aaron Hall 23. siječnja 2015-01-23 02:45 '15 u 2:45 am 2015-01-23 02:45

U Pythonu 3.4 možete koristiti i novi pathlib modul :

 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 odgovor je dao Antti Haapala 11. ožujka '15. u 23:50 2015-03-11 23:50

Relevantna Python dokumentacija predlaže korištenje stila kodiranja EAFP-a (lakše je tražiti oprost od dozvola) . To znači da je kod

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

bolje od alternative

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

Dokumentacija pretpostavlja da je to upravo zbog stanja utrke o kojem se raspravljalo u ovom pitanju. Osim toga, kao što su drugi spomenuli, prednost performansi za upite jednom nije dvostruko veća od operativnog sustava. Naposljetku, predloženi argument, možda u korist drugog koda u nekim slučajevima - kada programer zna okolinu u kojoj se pokreće aplikacija - može biti zaštićen samo u posebnom slučaju u kojem je program postavio privatno okruženje za (i druge instance istog isti program).

Ipak, ovo je loša praksa i može dovesti do dugotrajnog beskorisnog otkrivanja pogrešaka. Na primjer, činjenica da smo postavili dopuštenja za direktorij ne bi nam ostavila dozvole za prikazivanje, koje su ispravno postavljene za naše potrebe. Nadređeni direktorij može se instalirati s različitim dozvolama. Općenito, program bi uvijek trebao raditi ispravno, a programer ne bi trebao očekivati ​​nikakvo posebno okruženje.

9
14 июля '14 в 18:29 2014-07-14 18:29 odgovor je dao kavadias 14. srpnja '14. u 18:29 2014-07-14 18:29

Možete koristiti mkpath

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

Imajte na umu da će također stvoriti imenike predaka.

Radi za Python 2 i 3.

7
14 сент. Odgovor dao Dennis Golomazov 14. rujna. 2016-09-14 00:44 '16 u 0:44 2016-09-14 00:44

U Python3 , os.makedirs podržava instalaciju exist_ok . Zadana vrijednost je False , što znači da će se OSError podići ako ciljni direktorij već postoji. Postavljanjem exist_ok na True , OSError (direktorij postoji) bit će zanemaren i direktorij neće biti kreiran.

 os.makedirs(path,exist_ok=True) 

U Python2, os.makedirs ne podržava instalaciju exist_ok . Ovaj pristup možete koristiti kao odgovor na heikki-toivonen :

 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 янв. odgovor je dao euccas siječanj 04 2017-01-04 01:33 '17 u 1:33 2017-01-04 01:33

Koristim os.path.exists() , ovdje je Python 3 skripta koju možete koristiti za provjeru direktorija, stvoriti ga ako ne postoji, i izbrisati ga ako postoji (ako želite).

Korisnicima se traži da unesu direktorij i mogu se lako mijenjati.

6
09 февр. Odgovor je dao Michael Strobel 09. veljače. 2017-02-09 06:56 '17 u 6:56 2017-02-09 06:56

Za rješenje s jednim retkom možete koristiti IPython.utils.path.ensure_dir_exists() :

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

Iz dokumentacije : provjerite postoji li direktorij. Ako ne postoji, pokušajte ga stvoriti i zaštititi ga od uvjeta utrke ako drugi postupak učini isto.

6
29 марта '16 в 18:50 2016-03-29 18:50 odgovor je dan tashuhka 29. ožujka u 18:50 2016-03-29 18:50

Vidio sam odgovore Heikki Toivonen i ABB i razmišljao o toj opciji.

 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 февр. odgovor dan alissonmuller 08. veljače. 2016-02-08 07:08 '16 u 7:08 2016-02-08 07:08

Našao sam ovaj Q / A, a na početku sam bio zbunjen nekim neuspjesima i greškama koje sam dobio. Radim u Pythonu 3 (v.3.5 u virtualnom okruženju Anaconda na sustavu Arch Linux x86_64).

Razmotrite ovu strukturu direktorija:

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

Evo mojih eksperimenata / bilješki koje razjašnjavaju stvari:

 # ---------------------------------------------------------------------------- # [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 # ---------------------------------------------------------------------------- 

Zaključak: po mom mišljenju, "Metoda 2" je pouzdanija.

[1] Kako stvoriti direktorij ako ne postoji?

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

5
16 дек. Odgovor daje Viktorija Stuart 16. prosinca. 2017-12-16 07:16 '17 u 7:16 AM 2017-12-16 07:16

Prilikom rada s I / O datotekama važno je uzeti u obzir

TOCTTOU (vrijeme provjere u vrijeme korištenja)

Stoga, provjera s naknadnim čitanjem i pisanjem može rezultirati neobrađenom I / O iznimkom. Najbolji način da to učinite je:

 try: os.makedirs(dir_path) except OSError as e: if e.errno != errno.EEXIS: raise 
4
19 окт. Odgovor dao SHAHS 19. listopada 2017-10-19 17:09 '17 u 17:09 2017-10-19 17:09

Za to možete koristiti os.listdir :

 import os if 'dirName' in os.listdir('parentFolderPath') print('Directory Exists') 
4
08 июня '16 в 15:52 2016-06-08 15:52 odgovor je dan iPhynx 08. lipnja u 15:52 sati 2016-06-08 15:52

Ako uzmete u obzir sljedeće:

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

znači da postoji direktorij (put) I je direktorij. Stoga, za mene, ovaj put čini ono što trebam. Tako mogu osigurati da ova mapa (a ne datoteka) postoji.

2
03 дек. Odgovor daje Ralph Schwerdt 03 dec. 2016-12-03 19:00 '16 u 19 sati 2016-12-03 19:00

Pomoću ove naredbe provjerite i stvorite direktorij.

  if not os.path.isdir(test_img_dir): os.mkdir(str("./"+test_img_dir)) 
1
16 апр. Odgovor je dao Manivannan Murugavel 16. travnja. 2018-04-16 10:30 '18 u 10:30 2018-04-16 10:30

Zašto ne koristiti modul potprocesa ako se izvodi na stroju koji podržava jezike ljuske? Pokreće Python 2.7 i Python 3.6

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

Na većini sustava to mora obaviti.

1
11 сент. Odgovor dao Geoff Paul Bremner 11. rujna 2018-09-11 21:23 '18 u 21:23 2018-09-11 21:23

Pozovite funkciju create_dir() na ulaznoj točki programa / projekta.

 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 апр. Odgovor dao Steffi Keran Rani J 28. travnja. 2018-04-28 19:00 '18 u 19 sati 2018-04-28 19:00

Što misliš o ovome?

 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 нояб. odgovor je dao Akash Nayak 15 nov. 2017-11-15 13:33 '17 u 13:33 2017-11-15 13:33
 import os os.system("mkdir -p ./testdir") 

-p radi sav posao za vas, zašto se gnjaviti s ovom probnom / lovnom aplikacijom, kada Linux i Windows PowerShell već godinama imaju mkdir -p. Jedini razlog koji trebate provjeriti jest ako želite ispisati informacije u časopisu ili na zaslonu.

0
29 авг. Odgovor dao Eamonn Kenny 29. kolovoza. 2016-08-29 14:34 '16 u 14:34 2016-08-29 14:34
 import os if os.path.isfile(filename): print "file exists" else: "Your code here" 

Gdje se ovdje koristi vaš kod pomoću naredbe (dodirni)

To će provjeriti postoji li datoteka, ako ne, onda će je stvoriti.

-1
06 июля '17 в 2:15 2017-07-06 02:15 odgovor je dao Evil Exists srpanj 06 '17 u 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
ответ дан c4f4t0r 02 сент. '13 в 0:04 2013-09-02 00:04

Другие вопросы по меткам или Задайте вопрос