2016-05-26 28 views
7

Sto cercando di rinominare più file in una directory utilizzando questo script Python:Rinominare più file in una directory utilizzando Python

import os 
path = '/Users/myName/Desktop/directory' 
files = os.listdir(path) 
i = 1 

for file in files: 
    os.rename(file, str(i)+'.jpg') 
    i = i+1 

Quando ho eseguito questo script, ottengo il seguente errore:

Traceback (most recent call last): 
    File "rename.py", line 7, in <module> 
    os.rename(file, str(i)+'.jpg') 
OSError: [Errno 2] No such file or directory 

Perché è quello? Come posso risolvere questo problema?

Grazie.

+0

È necessario specificare l'intero percorso. –

+0

La lista 'file' conterrà tutti i file in' percorso', ma quando si esegue 'os.rename()', cerca un file nella directory di lavoro corrente. –

+1

'os.listdir()' restituisce solo i nomi file e non il percorso completo del file. Utilizzare 'os.path.join (percorso, file)' per ottenere il percorso completo e rinominarlo. – danielunderwood

risposta

20

non stanno dando l'intero percorso, mentre la ridenominazione, fare in questo modo:

import os 
path = '/Users/myName/Desktop/directory' 
files = os.listdir(path) 
i = 1 

for file in files: 
    os.rename(os.path.join(path, file), os.path.join(path, str(i)+'.jpg')) 
    i = i+1 

Edit: Grazie a tavo, La prima soluzione sarebbe spostare il file nella directory corrente, fissato questo.

+1

Nota che questo sposta anche il file nella directory corrente. Per evitare ciò, fare 'os.rename (os.path.join (percorso, file), os.path.join (percorso, str (i) + '. Jpg'))' invece. – tavo

2

È necessario innanzitutto impostare questo percorso come directory di lavoro corrente. abbastanza semplice. resto del codice non ha errori.

per renderla corrente directory di lavoro:

os.chdir(path)