2013-07-19 18 views
8

Jak mogę zmienić nazwy następujących plików:Zmiana nazwy wielu plików w Pythonie

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

do następujących:

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

dany przepis brzmi:

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

Odpowiedz

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

Jedną linię można przerwać na:

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

dziękuję. ale czy mógłbyś podzielić złożony kod na prostszy, aby początkujący mógł to zrozumieć? –

+0

Edytowałem odpowiedź. @guava – zhangyangyu

+0

co oznaczają części [1]? –

0

Bo zrobili coś podobnego dzisiaj:

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