I have the following structure:
Dir 1
|___Dir 2
|___file 1
|___file 2...
Dir 3
|___Dir 4
|___file 3...
I would like to be able to find each file recursively, process the file in my own way, once done, delete the file, move to the next. Then if the directory is empty, delete that as as well, working my way up until nothing is left.
Just no sure how to proceed.
This is what I have:
for root, dirs, files in os.walk(dir):
path = root.split('/')
for file in files:
file = os.path.join(root, file)
process_file(file)
os.remove(file)
Which is fine, but I would like then to delete the subdirs if and only they are empty.
Well, I guess this will do, have to run os.walk though...
def get_files(src_dir):
# traverse root directory, and list directories as dirs and files as files
for root, dirs, files in os.walk(src_dir):
path = root.split('/')
for file in files:
process(os.path.join(root, file))
os.remove(os.path.join(root, file))
def del_dirs(src_dir):
for dirpath, _, _ in os.walk(src_dir, topdown=False): # Listing the files
if dirpath == src_dir:
break
try:
os.rmdir(dirpath)
except OSError as ex:
print(ex)
def main():
get_files(src_dir)
del_dirs(src_dir)
if __name__ == "__main__":
main()
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With