Come spostare file con Python

Guida del di

Esercitazioni Python

Python è un linguaggio di programmazione orientato agli oggetti con potenzialità praticamente infinite, permette infatti, con poche righe di codice, di creare programmi utili e divertenti.

La guida più avanti, vi permetterà di spostare dei file in maniera casuale, da una cartella ad un'altra, ad intervalli di tempo regolari decisi da voi.

Come spostare file con Python: Importazione Librerie

Il programma richiama numerose funzioni esterne, per questo motivo è necessario importare 4 librerie in questo modo:

  • import shutil

  • import os

  • import random

  • import time

Come spostare file con Python: Definire la Funzione

La funzione che andremo a definire si chiamerà "tomove" ed avrà i seguenti parametri in ingresso:

  • path. Il percorso della cartella dove si trovano i file da spostare

  • dest. Il percorso della cartella dove i file verranno spostati.

  • temp. La frequenza con la quale verranno spostati i file.

Come spostare file con Python: Acquisizione Nome e Numero di File

Il programma inizialmente dovrà "catturare" tutti i nomi dei file, metendoli all'interno di una lista. Per svolgere questa operazione ci viene in aiuto la libreria "os", infatti con il comando "os.listdir(path)" verrà inizializzata una lista contenente tutti i nomi dei file di quella directory con le relative estensioni.

È sufficiente assegnare una variabile alla funzione, ad esempio "x=os.listdir(path)" e con un'altra variabile che chiameremo "numfile" registrare il numero di file totali presenti in quella cartella, in questo modo: "numfile=len(x)".

Come spostare file con Python: Selezionare un File in maniera Random

In questa fase si entra nel vivo del programma, creiamo un ciclo while che si interromperà solamente quando il numero di file sarà uguale a 0: " while(numerofile>-1):", in questo caso il ciclo While terminerà non appena la variabile "numerofile" sarà uguale a -1.

La lista x contiene tutti i nomi dei file presenti nella directory inserita, è importante ricordarsi che in una lista, per richiamare il primo oggetto non bisogna scrivere nomelista[1], ma bensì nomelista[0].

Per questo motivo subito dopo il while, prima delle altre istruzioni, si inserirà una linea di comando che decrementerà di 1 la variabiale "numerofile" ad ogni ciclo, in questo modo non si corre il rischio di andare a cercare un elemento che si trovi fuori dalla lista "x", se infatti abbiamo 100 elementi ed inseriamo nomelista[100] il programma ci restituirà errore, perché per selezionare l'elemento 100 bisogna scrivere nomelista[99].

Grazie alla libreria "random" siamo in grado di generare un numero casuale (sarebbe più corretto dire pseudocasuale) che ci permetterà di andare a selezionare un file nella nostra cartella iniziale che sarà poi spostato nella cartella di destinazione.

La linea di comando "m=random.randint(0, numerofile)", ci permette di assegnare alla variabile "m", un numero compreso tra 0 ed il numero di file presenti nella nostra cartella.

Una volta che la variabile "m" assume un valore, quest'altra linea di comando "s=path+"/"+x[m]", assegnerà alla variabile s il percorso esatto del file che si vuole spostare, vediamo in che modo: la variabile "path", è quella inserita inizialmente ed indica la cartella contenenti tutti i file da spostare, la stringa "/" serve semplicemente a dire al programma che il file si trova nella cartella precedente al simbolo "/" ed infine la dicitura "x[m]" va a selezionare nella lista "x" contenente tutti i nomi dei file, un nome a caso, in questo modo si avrà il percorso dei file selezionato.

Per tenere traccia dell'ordine in cui vengono spostati i file, è sufficiente inserire un print che stamperà il nome del file ogni volta che viene selezionato: "print(x[m])".

Come spostare file con Python: Muovere il file

La funzione "shutil" attraverso il metodo "move" ci permette di spostare il nostro file nella directory richiesta. La riga di codice da scrivere è la seguente: "shutil.move(s,dest)", dove la variabile "s" indica il percorso del file da spostare mentre "dest" indica la cartella in cui verrà spostato.

Una volta spostato il file è molto importante cancellarlo dalla lista "x", in questo modo, il programma non potrà riselezionarlo. Se non si esegue questo passaggio, il programma in maniera casuale potrebbe ricreare una variabile con il percorso del file già spostato in precedenza, ma in questo caso, il file non verrà trovato perché appunto già spostato in precedenza e verrà quindi emesso un segnale di errore che bloccherà il programma.

Per rimuovere il file già spostato dalla lista è sufficiente usare la linea di comando: "del x[m]".

Come spostare file con Python: frequenza di spostamento e chiusura programma.

Nell'ultima parte del programma, verrà utilizzata la libreria "time", questa libreria ci permette di "bloccare" momentaneamente l'intero programma impedendogli di spostare tutti i file immediatamente.

Il comando "time.sleep(temp)" in base al parametro passato inizialmente alla variabile "temp", "blocca" per il numero di secondi indicato il programma, per poi fargli riprendere il funzionamento subito dopo.

Per terminare il programma in modo che restituisca una stringa una volta terminati i file, è sufficiente inserire un "if", che con un'opportuna verifica controlli quando i file sono terminati, facendo ritornare una scritta che annuncia la fine dello spostamento.

if numerofile==0:

return "Programma Terminato"

In questo modo il programma, dopo aver spostato tutti i file restituirà la stringa indicata.

Come spostare file con Python: Consiglio!

Il programma è stato testato su Python 3.3.2, per farlo funzionare con la versione di Python 2.7.5 è sufficiente togliere le parentesi con le quali la funzione "print" racchiude gli oggetti:

Esempio:

  • print (move(path,dest)) Forma giusta per Python 3.3.2
  • print move(path,dest) Forma giusta per Python 2.7.5
     

Link --> Codice Sorgente del Programma <-- Link