2013-07-19 20 views
8

Come posso rinominare i seguenti file:rinominare più file in Python

abc_2000.jpg 
abc_2001.jpg 
abc_2004.jpg 
abc_2007.jpg 

nelle seguenti:

year_2000.jpg 
year_2001.jpg 
year_2004.jpg 
year_2007.jpg 

Il codice relativo è:

import os 
import glob 
files = glob.glob('abc*.jpg') 
for file in files: 
    os.rename(file, '{}.txt'.format(???)) 

risposta

11
import os 
import glob 
files = glob.glob('year*.jpg') 
for file in files: 
    os.rename(file, 'year_{}'.format(file.split('_')[1])) 

La riga può essere interrotta su:

for file in files: 
    parts = file.split('_') #[abc, 2000.jpg] 
    new_name = 'year_{}'.format(parts[1]) #year_2000.jpg 
    os.rename(file, new_name) 
+0

grazie. ma potresti per favore abbattere il codice complesso in uno più semplice in modo che un principiante possa capire? –

+0

Ho modificato la risposta. @ guava – zhangyangyu

+0

cosa significa parti [1]? –

0

perché ho fatto qualcosa di simile oggi:

#!/usr/bin/env python 

import os 
import sys 
import re 

if __name__ == "__main__": 
    _, indir = sys.argv 

    infiles = [f for f in os.listdir(indir) if os.path.isfile(os.path.join(indir, f))] 

    for infile in infiles: 
     outfile = re.sub(r'abc', r'year' , infile) 
     os.rename(os.path.join(indir, infile), os.path.join(indir, outfile)) 
Problemi correlati