2013-07-19 12 views
8

Wie kann ich die folgenden Dateien umbenennen:Umbenennen mehrerer Dateien in Python

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

in die folgenden:

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

Der entsprechende Code ist:

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

Antwort

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

Die eine Zeile kann wie folgt aufgeteilt werden:

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

danke. Aber könnten Sie bitte komplexen Code in einen einfacheren zerlegen, damit ein Neuling das verstehen kann? –

+0

Ich habe die Antwort bearbeitet. @guava – zhangyangyu

+0

Was bedeutet Teile [1]? –

0

Weil ich etwas ähnliches heute getan haben:

#!/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)) 
Verwandte Themen