Use os.listdir to obtain the names of entries in a directory, then process those names with other filesystem functions. It helps break directory automation into input, processing, and output. section 9.5.3
Avoid duplicate picture copies
A picture-merging function loops over os.listdir(target_dir), compares each existing entry with the source file using filecmp.cmp, and copies the source with shutil.copy only when no identical file exists. Test first with small, harmless sample directories, including repeated filenames. section 9.5.3
Listing 9.7 make_copy function for our pictures merge task
def make_copy(fname, target_dir):
'''
fname is a filename like pictures1/1262.png.
target_dir is the name of a directory. #2
#2
Compare the file fname to all files in target_dir. #2
If fname is not identical to any file in #2
target_dir, copy it to target_dir #2
''' #2
for target_fname in os.listdir(target_dir): #1
if filecmp.cmp(fname, os.path.join( \ #2
target_dir, target_fname)):
return #3
shutil.copy(fname, get_good_filename( #4
os.path.join(target_dir, \ #4
os.path.basename(fname)))) #4
See os.listdir used inside make_copy to inspect a target directory before copying a file. section 9.5.3


