[Tutor] Deleting specified files using a python program...help with code?]

David david at abbottdavid.com
Tue Jul 1 03:05:47 CEST 2008


Alan Gauld wrote:
>
> "David" <david at abbottdavid.com> wrote
>
>> dir_input = raw_input('Enter dir: ')
>> win_trace = ['*.ini', '*.db']
>> files_removed = 0
>> for root, dirs, files in os.walk(dir_input):
>>    for trace in win_trace:
>>        win_trace_path = os.path.join(root, trace)
>>        for filename in glob.glob(win_trace_path):
>>            if os.path.exists(filename):
>>                print filename
>>            else:
>>                print 'No files found'
>
> Note that at this point you have printed both names but you have not 
> stored a reference to them.
> Thus filename contains only the last name.
>
> You need to create a list of the valid filenames.
> You could use a list compreghension like so:
>
> files = [f for f in glob.glob(win_trace_path) if os.path.exists(f)]
> print files
>
>> confirmation = raw_input('Confirm removal: ')
>> if confirmation == 'y':
>>    print "removing '%s'" % filename
>>    os.remove(filename)
>>    files_removed += 1
>
> And now you are removing only one file, but you need to remove all of 
> the files in your list so add a loop like:
>
>> if confirmation == 'y':
>     for filename in files:
>        print "removing '%s'" % filename
>        os.remove(filename)
>        files_removed += 1
>
>
>> elif confirmation == 'n':
>>    pass
>> else:
>>    sys.exit()
>
> The elif doesn't do anything so you can delete it.
>
> HTH,
>
>
Thanks Alan,

I am learning python in a group and one of the members came up with this;

#!/usr/bin/python
# Filename : new_remove-file.py
import os
import sys
import glob

dir_input = raw_input('Enter dir: ')
win_trace = ['*.ini', '*.db', '*.txt']
files_removed = 0
file_list = []
for root, dirs, files in os.walk(dir_input):
    for trace in win_trace:
        win_trace_path = os.path.join(root, trace)
        for filename in glob.glob(win_trace_path):
            if os.path.exists(filename):
                print filename
                file_list.append(filename)
            else:
                print 'No files found'
confirmation = raw_input('Confirm removal: ')
if confirmation == 'y':
    for file in file_list:
        print "removing " + file
        os.remove(file)
        files_removed += 1
if files_removed :
    print '%d files removed' % files_removed
else :
    print 'No files removed'


Can see why it did not work before. That is progress.

-- 
Powered by Gentoo GNU/LINUX
http://www.linuxcrazy.com



More information about the Tutor mailing list