Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2003
    Messaggi
    704

    [python] cerca files e directory

    codice:
    print
            for root, dirs, files in os.walk(sys.argv[2]):
                for filename in files:
                    if filename:
                        if sys.argv[1] in filename:
                            if os.path.isfile(filename):
                                abspath = os.path.join(root, filename)
                                print
                                print "%s,  %s,  FILE" %(abspath, os.path.abspath(filename))
                                print
            self.searchdir()
    
        def searchdir(self):
            for root, dirs, files in os.walk(sys.argv[2]):        
                for dirname in dirs:
                    if dirname:
                        if sys.argv[1] in dirname:
                            if os.path.isdir(dirname):
                                abspath = os.path.join(root, dirname)
                                print
                                print "%s,  %s,  DIRECTORY" %(abspath, os.path.abspath(dirname))
                                print
                    else:
                        print
                        print "ricerca completata. Non e' stata individuata nessuna voce corrispondente."
                        print
    questa e' parte di una classe...il problema sta nel fatto che a volte mi trova il file solo se si trova nella dir corrente, altre volte lo trova anche in sottodirectory...insomma...tenete presente che sto imparando da poco...vi chiedo il favore di correggere questo script, o darmi qualche consiglio..grazie.

  2. #2
    visto così hai allungato spropositatamente il codice, un pò di conzioni superflue, per correggere il codice vorrei vedere lo script completo (se possibile).

    ciao
    PyGTK GUI programming
    un impegno concreto: eliminare la k dalle tastiere italiane

  3. #3
    Utente di HTML.it
    Registrato dal
    Nov 2003
    Messaggi
    704
    si...ovviamente la lunghezza e' spropositata(la condizione os.path.isfile/isdir si puo' mettere in una sola funzione), e lo "migliorero' dopo....pero' intanto vorrei farlo funzionare

    ecco la classe:
    codice:
    import os
    import sys
    
    class find:
        """programma da riga di comando che permette di cercare un file o una directory all'interno del percorso specificato."""
        def __init__(self):
            list = []
            try:
                list.append(sys.argv[1])
                list.append(sys.argv[2])
                if sys.argv[1] == "-?":
                    self.help()
                elif sys.argv[1] == "-help":
                    self.help()
                else:
                    self.search()
            except IndexError:
                self.help()
    
        def help(self):
               print
               print
               print "programma da riga di comando che permette di cercare un file o una directory all'interno del percorso specificato."
               print
               print "USO:"
               print "cerca <nome_file( directory )_da cercare> <percorso_in_cui_cercare>"
               print "cerca -?, questa guida."
               print "cerca -help, questa guida"
    
        def search(self):
            print
            for root, dirs, files in os.walk(sys.argv[2]):
                for filename in files:
                    if filename:
                        if sys.argv[1] in filename:
                            if os.path.isfile(filename):
                                abspath = os.path.join(root, filename)
                                print
                                print "%s,  %s,  FILE" %(abspath, os.path.abspath(filename))
                                print
            self.searchdir()
    
        def searchdir(self):
            for root, dirs, files in os.walk(sys.argv[2]):        
                for dirname in dirs:
                    if dirname:
                        if sys.argv[1] in dirname:
                            if os.path.isdir(dirname):
                                abspath = os.path.join(root, dirname)
                                print
                                print "%s,  %s,  DIRECTORY" %(abspath, os.path.abspath(dirname))
                                print
                    else:
                        print
                        print "ricerca completata. Non e' stata individuata nessuna voce corrispondente."
                        print
    ora tocca a te korn

    bye

  4. #4
    codice:
    #!/usr/bin/env python
    import os, sys
    
    class find:
        """ programma da riga di comando che permette di cercare un file o una directory all'interno del percorso specificato."""
        def __init__(self):
            try:
                if sys.argv[1] == "-?":
                    self.help()
                elif sys.argv[1] == "-help":
                    self.help()
                else:
                    self.search()
            except IndexError:
                self.help()
    
        def help(self):
               print """\nprogramma da riga di comando che permette di cercare un file o una directory\nall'interno del percorso specificato.\n\nCome usare questo script:\n\ncerca <nome_file( directory )_da cercare> <percorso_in_cui_cercare>\n\ncerca -?, questa guida.\n\ncerca -help, questa guida\n\n"""
    
        def search(self):
            print
            for root, dirs, files in os.walk(sys.argv[2]):
                for filename in files:
                    if sys.argv[1] in filename:
                        if os.path.isfile(filename):
                            abspath = os.path.join(root, filename)
                            print abspath + " -> FILE\n"
                for dirname in dirs:
                    if sys.argv[1] in dirname:
                        if os.path.isdir(dirname):
                            abspath = os.path.join(root, dirname)
                            print abspath + " -> DIRECTORY\n"
                    else:
                        pass
    find()
    PyGTK GUI programming
    un impegno concreto: eliminare la k dalle tastiere italiane

  5. #5
    Utente di HTML.it
    Registrato dal
    Nov 2003
    Messaggi
    704
    ti ringrazio tantissimo korn

    adesso lo provo....

  6. #6
    Utente di HTML.it
    Registrato dal
    Nov 2003
    Messaggi
    704
    korn a me tutto cio' non risolve...

  7. #7
    allora non ho capito il tuo problema, fatto così ti cerca un file e/o una directory e ti stampa a video il percorso completo, specificando se si tratta di un file o una directory.

    Come parametri gli passi argv[1] = nome da cercare, argv[2] = directory di partenza per la ricerca.

    Se non lo volevi così non ci siamo spiegati...però dall'help che hai scritto ho intuito questa cosa.

    ciau
    PyGTK GUI programming
    un impegno concreto: eliminare la k dalle tastiere italiane

  8. #8
    Utente di HTML.it
    Registrato dal
    Nov 2003
    Messaggi
    704
    si, penso proprio che tu abbia capito il problema....
    pero' l'ho provato e non ha dato risultati....premetto che l'ho provato finora solo su XP pro, poi faro' la prova in debian...si XP non funziona...ma tu lo hai provato e funziona!?!? comunque grazie

  9. #9
    Argh...cos'è windows XP ??

    a dire il vero l'ho scritto e testato su Gentoo...non ho windows installato non lo posso provare, sorry
    PyGTK GUI programming
    un impegno concreto: eliminare la k dalle tastiere italiane

  10. #10
    Utente di HTML.it
    Registrato dal
    Nov 2003
    Messaggi
    704
    grazie mille lo stesso

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.