Ciao, come primo progetto per migliorare le mie abilità con python ho deciso di creare uno script per rinominare gruppi di file. (funzione che manca a nautilus, file manager di default in gnome)
So che esistono molti script e programmi in grado di fare la stessa cosa.
Il mio è scritto per essere il più semplice ed immediato possibile. L'ho creato per l'utilizzo da terminale, senza nessuna GUI. E spero di aver raggiunto il mio scopo.
Sarei felice di avere un vostro parere o un contributo.
Grazie.
codice:#!/usr/bin/python2.7 """Pyren, rinomina gruppi di file e cartelle. Copyright (C) 2012 Marco 'Falk689' Fabbri. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>.""" import os corr = os.getcwd() print "" print "======================================================" print "" print "Pyren. Copyright (C) 2012 Marco 'Falk689' Fabbri" print "This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'." print "This is free software, and you are welcome to redistribute it" print "under certain conditions; type `show c' for details." print "" print "======================================================" print "ATTENZIONE: Usare nomi identici a quelli gia' presenti" print "nella cartella di destinazione potrebbe causare" print "effetti imprevisti. Sei stato avvisato." print "======================================================" print "" def rinomina(): #Funzione finale di rinomina. global cartella try: num = input("Inserisci il numero del primo file (1): ") numero = repr(num) if num < 10: numero = "000"+numero elif num < 100: numero = "00"+numero elif num < 1000: numero = "0"+numero except: num = 1 numero = "0001" global sfile global nomelista nome = nomelista+"-"+numero print "Rinomina in corso..." a = 0 for i in sfile: numfile = sfile[a] nomefile = cartella[numfile] if "." in nomefile: #Verifica se si tratta di un file o di una cartella tramite il formato (es testo.txt) u = nomefile.index(".") formato = nomefile[u:100] nome = nome+formato if nome in cartella: nome = nomelista+"-"+numero+"-sav"+formato if nome in cartella: nome = nomelista+"-"+numero+"-sav" os.rename(cartella[numfile], nome) print cartella[num-1]+" > rinominato in: > "+nome a = a + 1 num = num + 1 numero = repr(num) if num < 10: numero = "000"+numero elif num < 100: numero = "00"+numero elif num < 1000: numero = "0"+numero nome = nomelista+"-"+numero print "Operazione completata." def lista(): #Definizione e stampa della lista dei file nella cartella global cartella cartella = os.listdir(corr) cartella.sort() print "======================================================" print "Lista file:" global termine a = 1 b = 0 for x in cartella: print a,">>>", cartella[b] a, b = a + 1, b + 1 termine = b select() def select(): #Selezione dei singoli o delle serie di file global cartella global sfile global nomelista sfile = [] print "======================================================" print "Digita un numero corrispondente ad un file da" print "rinominare oppure due numeri separati da una" print "virgola, per selezionare una serie di file (es 1,10)" print "" print "`d' per concludere la selezione," print "`r' per riavviare il programma," print "`exit' per uscire." print "" while True: x = raw_input(">>> ") if x == "exit": print "Uscita in corso..." break elif x == "show w": print "" print "This program is distributed in the hope that it will be useful," print "but WITHOUT ANY WARRANTY; without even the implied warranty of" print "MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the" print "GNU General Public License for more details." print "" elif x == "show c": print "" print "This program is free software: you can redistribute it and/or modify" print "it under the terms of the GNU General Public License as published by" print "the Free Software Foundation, either version 3 of the License, or" print "(at your option) any later version." print "" elif x == "r": print "Riavvio..." print "" print "" print "" lista() break elif x == "d" and sfile == []: print "Seleziona almeno un file." elif x == "d": sfile.sort() print "Selezione completata." nomelista = raw_input("Digita il nome della lista: ") if nomelista == "": nomelista = " " print "Il nome e':", nomelista print "I file interessati sono:" f = 0 for k in sfile: numfile = int(k) print cartella[numfile] f = f + 1 procedi() break else: try: if x.count(',') == 1 and x[0] != 0 and x.count(' ') == 0: virgola = x.index(',') pstr = x[0:virgola] sstr = x[virgola+1:100] primo = int(pstr) - 1 secondo = int(sstr) if secondo <= termine: j = range(primo,secondo) for n in j: sfile.append(n) else: print "File non disponibile" else: j = int(x) d = j - 1 if d in sfile: print "File gia' selezionato" elif j > termine or j == 0: print "File non disponibile." elif j != 0: j = j - 1 sfile.append(j) except: print "Inserisci un numero o un comando valido" def procedi(): #Semplice funzione di conferma in grado di riavviare o uscire dal programma domanda = raw_input("Procedi? `s', `n', `exit': ") if domanda == "s": rinomina() elif domanda == "exit": print "Uscita in corso..." return elif domanda == "n": lista() else: print "Rispondi `s',`n' o `exit'" procedi() lista()


Rispondi quotando