[Tutor] renaming files within a directory

Kent Johnson kent37 at tds.net
Mon Jul 27 13:01:32 CEST 2009


On Mon, Jul 27, 2009 at 5:10 AM, <davidwilson at safe-mail.net> wrote:

> files = set([file for file in os.listdir(os.getcwd()) if file.endswith('svg')])
> print len(files)
>
> for file in files:
>    file = file.strip('.svg')
>    print file
> #    if countries.has_key(file):
> #       print file
>
> When I run this I get:
>
> Flag_of_Uganda
> ...
>
> The problem is that for example the file Flag_of_the_United_States.svg when I use the strip('.svg') it is returned as Flag_of_the_United_State
>
> Also, How do I remove 'Flag_of', 'Flag_of_the_'

I suggest you use glob.glob() instead of os.listdir():

files = glob.glob('Flag_of_*.svg)

Then you know that each file name starts with Flag_of_ and ends with
.svg. To remove them, since they are fixed strings you can just use
slicing;
file = file[8:-4]
if file.startswith('the_'):
  file = file[4:]

Kent


More information about the Tutor mailing list