Sie sind auf Seite 1von 4

Colabore conosco na construção de uma comunidade amigável, colaborativa e instrutiva através do nosso código de conduta.

Como criar um diretório em Python? Faça uma pergunta

Como posso utilizar o Python para poder


criar um determinado diretório?

Por exemplo:

app/
main.py

Como poderia fazer para criar um diretório


chamado temp dentro de app através do
Python main.py ?

python diretório

perguntada 9/12/16 às 13:11


Wallace Maxters
57,2mil 22 178 455

Só duas duvidas, seria recursivamente a


pasta temp não pode ser "visível"? –
Guilherme Nascimento 9/12/16 às 13:24

@GuilhermeNascimento Eu só preciso criar


o diretório :p – Wallace Maxters 9/12/16 às
13:25

4 Respostas

Resposta usando Python 3.*

É possível usar os.makedirs ou os.mkdir .

os.makedirs

Cria todos os diretórios que forem


especificados no parâmetro,
recursivamente.
Ex.: os.makedir('./temp/2016/12/09') irá
criar as pastas temp, 2016, 12 e 09.

os.mkdir

Só cria o último diretório. Se os diretórios


anteriores não existirem causará um erro.
Ex.: os.mkdir('./temp/2016/12/09') - só
criará o diretório 09 e somente se os
anteriores existirem, caso contrário,
causará o seguinte erro

FileNotFoundError: [WinError 3] The


system cannot find the path specified:
'./1/2/3/4'
Exemplo:

import os

dir = './temp'
os.makedirs(dir)
# ou
os.mkdir(dir)

editada 9/12/16 às 19:34

respondida 9/12/16 às 13:18


LINQ
53,7mil 9 74 171

Existe mais de uma função para isto:

os.path.mkdir cria uma pasta


( os.mkdir se for Python3)
os.makedirs cria pasta(s)
recursivamente

O arquivo main.py está dentro de ./app


então pode simplesmente usar:

os.path.mkdir('./temp') #Python 2
os.mkdir('./temp') #Python 3

Se quiser criar subpastas baseado por data


(isso ajuda a "navegar" mais rápido
posteriormente):

os.makedirs('./temp/2016/12/9')

editada 9/12/16 às 19:24

respondida 9/12/16 às 13:51


Guilherme Nascimento
76,8mil 11 94 221

2 Boa! Tava procurando sobre o


os.path.mkdir agora mesmo. – LINQ
9/12/16 às 13:55

1 Aliás, os.path.mkdir deve ser do Python 2


– LINQ 9/12/16 às 19:18

1 @jbueno é que eu ainda não migrei pro 3,


nem comecei a estudar. já editei, obrigado! –
Guilherme Nascimento 9/12/16 às 19:27

Beleza, é só pra constar mesmo. – LINQ


9/12/16 às 19:27

O jeito mais correto para evitar condição de


corrida seria:
import os

try:
os.makedirs("./temp")
except OSError:
#faz o que acha que deve se não for poss

editada 13/04/17 às 12:59


Comunidade ♦
1

respondida 9/12/16 às 13:20


Maniero ♦
304mil 48 746 1157

1 A ideia do Lock parece ótima, não se trata do


mesmo assunto, mas lembrei de um
problema que ocorria com um tipo de
formato de HD, pode ocorrer de truncar o
arquivo durante a gravação e uma boa
maneira de evitar perdas ou conflitos seria
criar um temporário e depois mover um por
cima do outro, claro que eu não sei afirmar
como é comportamento de um comando cp
tmp destino . Vou ler um pouco mais e
refatorar alguns códigos :) –
Guilherme Nascimento 9/12/16 às 13:33

Eventualmente você pode estar


interessado em criar da pasta './temp'
mesmo que ela já exista neste caso você
pode fazer assim:

import os

dirTemp = './temp'

try:
os.mkdir(dirTemp)
except OSError:
os.rmdir(dirTemp)
os.mkdir(dirTemp)

Evite usar 'dir' como nome de variável pois


'dir' é uma função Python

editada 2/05 às 21:52


Anderson Carlos Woss
41,6mil 7 57 124

respondida 2/05 às 21:41


Antonio Peixoto
1 1

3 Se o diretório já existe, qual o intuito de


removê-lo e criá-lo novamente? –
Anderson Carlos Woss 2/05 às 21:53

Além de não ter sentido em excluir uma


pasta somente para poder cria-la, ainda tem
a questão de que rmdir irá falhar se a
pasta contiver algum documento ou pasta,
emitindo uma exceção OSError , exemplo
de erro no Windows: OSError: [WinError
145] A pasta não está vazia: '<nome da
pasta>' , ou seja o script vai parar ali a não
ser que trate "o erro" com outro try: .
Recomendo que reformule a resposta. –
Guilherme Nascimento 2/05 às 22:02

Das könnte Ihnen auch gefallen