banda gunda wrote: > Dear Tutor, > > > I have made some progress! > > But not yet got the results. > > Attached is revised code. > > > Specifically, the problem in below: > > > for root, dirs, files in os.walk(".", topdown=False): > for name in files: > print(os.path.join(root, name)) > os.rename(path + name, path + name.replace("---", "changed"))
The `path` variable appears out of the blue here -- it should probably be `root`. Also, you should make it a habit to use os.path.join() to construct filenames, not string concatenation. The reason is that os.path.join() knows when to insert a path separator, and will pick the right one for the platform the script is running on. > #os.rename(path + "\\"+ name, path + "\\"+ name.replace("---", > #"changed") Do us (and yourself!) a favour, and remove abandoned code like the line above. It only makes the code harder to follow, and the one who suffers most from that are you. If you are afraid that you will lose valuable snippets put them elsewhere or consider adopting a version control system which allows you to go back to a former version when you find that a change was unsuccessful. > files[name] = os.sep.join([dirpath, name]) That doesn't make sense. What are you trying to achieve here? > > print (files) > > for name in dirs: > print(os.path.join(root, name)) > > > .\---DAT1\---DAT3\---000010.txt Note that os.rename() can make a mess of your data. I recommend that you use print statements instead until you are sure that your script does what you want, something like def dryrun_rename(old, new): print("rename", old) print("to ", new) print() for parent_dir, dirs, files in os.walk(".", topdown=False): for name in files: old_path = ... # construct filepath from parent_dir and name new_path = ... # construct filepath from parent_dir and modified # name # use os.path.join in both cases dryrun_rename(old_path, new_path) Once this prints what you expect you can swap dryrun_rename for os.rename. _______________________________________________ Tutor maillist - Tutor@python.org To unsubscribe or change subscription options: https://mail.python.org/mailman/listinfo/tutor