Jump to content

Como resolver o erro 'arquivo sendo usado por outro processo' ao mover arquivos com Python?


Postagens Recomendadas

Postado

Olá pessoal,

Me desafiei a criar com Python usando a biblioteca os uma pasta 'outros'dentro de cada projeto dentro da minha pasta para projetos. Não faz sentido, só fiz pra treinar. Mas dá esse erro:

Traceback (most recent call last):
  File "C:\Users\User\Desktop\angelo 2.0\projetos\pasta_outros\main.py", line 29, in <module>
    mover_pasta(caminho_pai, filhos)
  File "C:\Users\User\Desktop\angelo 2.0\projetos\pasta_outros\main.py", line 17, in mover_pasta
    os.rename(f'{caminho_pai}/{pasta_arquivo}', f'{caminho_pai}/outros/{pasta_arquivo}')
PermissionError: [WinError 32] O arquivo já está sendo usado por outro processo: 'C:\\Users\\User\\Desktop\\angelo 2.0\\projetos\\pasta_outros/outros' -> 'C:\\Users\\User\\Desktop\\angelo 2.0\\projetos\\pasta_outros/outros/outros'

Segue o código:

import os
dir_atual = os.getcwd() #pasta do arquivo
dir_pai = os.path.dirname(dir_atual) #pasta de projetos desorganizados
documentos = os.walk(dir_pai)
if __name__ == '__main__': 
	#função para criar uma pasta 'outros' se não existir
	def criar_pasta(caminho_pai:str):
		pasta_outros = f'{caminho_pai}/outros'
		if not os.path.exists(pasta_outros):
			os.mkdir(pasta_outros)

	#função para mover todos os arquivos de um diretório para 'outros'
	def mover_pasta(caminho_pai:str, filhos:list):
		criar_pasta(caminho_pai)
		for pasta_arquivo in filhos:
			if not '.py' in pasta_arquivo or '.md' in pasta_arquivo or 'pycache' in pasta_arquivo:
				os.rename(f'{caminho_pai}/{pasta_arquivo}', f'{caminho_pai}/outros/{pasta_arquivo}')

	#fazendo uma verificação se não há diretórios dentro do diretório-pai e se há arquivos '.py'.
	#criando e movendo arquivos que não possuem extensão '.py' para pasta 'outros'.
	#quando há um diretório '__pycache__' no diretório-pai, a ignoro.
	for caminho_pai, filhos, netos in documentos:
			caminhos_filhos = [caminho_pai + '/' + pasta_arquivo for pasta_arquivo in filhos] #lista dos camihos das pastas em diretório-pai
			e_arquivo = [os.path.isfile(pasta_arquivo) for pasta_arquivo in caminhos_filhos]
			e_py = ['.py' not in pasta_arquivo for pasta_arquivo in filhos]
			if all(e_arquivo) and any(e_py):
				mover_pasta(caminho_pai, filhos)
			elif '__pycache__' in filhos and any(e_py):
				mover_pasta(caminho_pai, filhos)


------------------
(program exited with code: 1)

Coloquei em anexo um print do erro.

erro.png

  • Curtir 1
  • Casa do Desenvolvedor mudou o título para Como resolver o erro 'arquivo sendo usado por outro processo' ao mover arquivos com Python?

Crie uma conta ou entre para comentar 😀

Você precisa ser um membro para deixar um comentário.

Crie a sua conta

Participe da nossa comunidade, crie sua conta.
É bem rápido!

Criar minha conta agora

Entrar

Você já tem uma conta?
Faça o login agora.

Entrar agora


×
×
  • Create New...