Jump to content

Archived

This topic is now archived and is closed to further replies.

Raul Silva

Bucando arquivos em pastas

Recommended Posts

Olá pessoal, tudo bem?

Sou novo no python. Estou tentando criar um script para buscar as imagens que estão no computador.

O erro que esta dando é:

c:\PythonPRJ\ImageSearch>python ImageSearch.py

File "ImageSearch.py", line 32

lookupDirectory("C:\\")

^

SyntaxError: invalid syntax

 

 

Eis meu script:

 

import os

def getExtension(filename):
   fileName, fileExtension = os.path.splitext(filename)
   return fileExtension
def inArray(array, to_look):
for x in array:
	if(to_look[1:] == x):
		return True
return False
def isImage(filename):
   # Extensions to search
   extensions = ['jpeg', 'jpg', 'jpe', 'tga', 'gif', 'tif', 'bmp', 'rle', 'pcx', 'png', 'mac', 'pnt', 'pntg', 'pct', 'pic', 'pict', 'qti', 'qtif']
   extension = getExtension(filename)
   if (inArray(extensions, extension)):
       return True
   return False

def lookupDirectory(directory):
   arquivos = os.listdir(os.path.expanduser(directory))
   for arquivo in arquivos:
       if(isImage(arquivo)):
           print arquivo
       if(os.path.isdir(arquivo)==True):
           return lookup(directory + "\\" + arquivo

lookupDirectory("C:\\")

 

Podem me ajudar?

Obrigado.

Share this post


Link to post
Share on other sites

Não é necessário encher de parênteses os ifs.

 

Está dando erro porque você não fechou os parênteses do return.

Share this post


Link to post
Share on other sites

Nossa, que erro besta, falta de atenção =/

Mas obrigado.

 

Agora está quase tudo certo. Poderia me ajudar em mais uma coisa?

Ele esta dando acesso negado ao acessar certas pastas (mesmo executando como administrador)

C:\Documents and Settings
Traceback (most recent call last):
 File "C:\PythonPRJ\ImageSearch\ImageSearch.py", line 28, in <module>
   lookupDirectory("C:\\")
 File "C:\PythonPRJ\ImageSearch\ImageSearch.py", line 26, in lookupDirectory
   lookupDirectory(arquivo)
 File "C:\PythonPRJ\ImageSearch\ImageSearch.py", line 19, in lookupDirectory
   arquivos = os.listdir(os.path.expanduser(directory))
WindowsError: [Error 5] Acesso negado: 'C:\\Documents and Settings/*.*'

 

 

O código

 

import os

def getExtension(filename):
   fileName, fileExtension = os.path.splitext(filename)
   return fileExtension
def inArray(array, to_look):
for x in array:
	if to_look[1:] == x:
		return True
return False
def isImage(filename):
   extensions = ['jpeg', 'jpg', 'jpe', 'tga', 'gif', 'tif', 'bmp', 'rle', 'pcx', 'png', 'mac', 'pnt', 'pntg', 'pct', 'pic', 'pict', 'qti', 'qtif']
   extension = getExtension(filename)
   if inArray(extensions, extension):
       return True
   return False

def lookupDirectory(directory):
   arquivos = os.listdir(os.path.expanduser(directory))
   for arquivo in arquivos:
       #if isImage(arquivo):
           #print arquivo
       if os.path.isdir(directory + arquivo) == True:
           arquivo = directory + arquivo
           print arquivo
           lookupDirectory(arquivo)

lookupDirectory("C:\\")

Share this post


Link to post
Share on other sites

Se você colocar um tratamento de exceção p/ capturar o WinError que é lançado, vai ver que dá pau quando o sistema tenta ler um arquivo/diretório chamado *.*.

Isso não dá certo mesmo.

 

Tente resolver esse problema e depois "disseque" a versão seguinte:

 

extensions = ['jpeg', 'jpg', 'jpe', 'tga', 'gif', 'tif', 'bmp', 'rle', 'pcx', 'png', 'mac', 'pnt', 'pntg', 'pct', 'pic', 'pict', 'qti', 'qtif']
root = 'C:\\Users\\Isis'

import os

walk_gen = os.walk(root)
for root,dirs,files in walk_gen:
for ext in extensions:
   	images = [os.sep.join([root, cur_file]) for cur_file in files if cur_file.endswith('.{0}'.format(ext))]
   	if images:
       	print images

Share this post


Link to post
Share on other sites

Isis, demorei pra responder mas estou de volta =)

Consegui fazendo isso:

import os

def getExtension(name):
   fileName, fileExtension = os.path.splitext(name)
   return fileExtension

def isExtensionPermited(extension):
   extensions = ['jpeg', 'jpg', 'jpe', 'tga', 'gif', 'tif', 'bmp', 'rle', 'pcx', 'png', 'mac', 'pnt', 'pntg', 'pct', 'pic', 'pict', 'qti', 'qtif']
   for x in extensions:
       if extension[:1] == '.':
           if extension[1:].lower() == x:
               return True
       elif extension.lower() == x:
           return True
   return False


def lookupDirectory(path):
   if os.path.isdir(path):
       files = os.listdir(path)
       for i in files:
           if i + '/' != 'windows/':
               if os.path.isdir(path + i + '/'):
                   lookupDirectory(path + i + '/')
               if isExtensionPermited(getExtension(i)) == True:
                   print i

 

Quanto ao seu código vou estuda-lo mais tarde, pois testei e não consegui executa-lo.

Estou dissecando o código, muito obrigado pela ajuda. Consegui entende-lo em parte. Será de grande ajuda para meus estudos.

Obrigado.

Share this post


Link to post
Share on other sites

×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.