Search code examples
pythoncopyzip

Ttrying to copy the content of files from source to destination, if file is .txt and if files have the same names and then ZIP each just copied file


I'm new to python and trying to copy the content of files from dir_A to dir_B. If file is .txt and if these files from dir_A and dir_B have the same names and after zip each of these newly copied files.

import os, shutil, zipfile

src_folder = "C:/Users/pushka/pythonApp1/src_folder"
dst_folder = "C:/Users/pushka/pythonApp1/dst_folder"

# only .txt files will be copied
ext = (".txt")

try:
    for src_f in os.scandir(src_folder):
        for dst_f in os.scandir(dst_folder):
            if src_f.path.endswith(ext) and os.path.basename(src_f) == os.path.basename(dst_f):
                # copy file
                shutil.copyfile(src_f, dst_f)

finally:
  print("The 'try except' is finished")

I have searched and tried several options to ZIP, but none of them work properly, so I need your help please


Solution

  • Thanks a lot, but here is the answer to my own question with your help

    import os, shutil, zipfile
    
    src_folder = "C:/Users/pushka/pythonApp1/src_folder"
    dst_folder = "C:/Users/pushka/pythonApp1/dst_folder"
    
    # only .txt files will be copied
    ext = ".txt"
    copied_files = []
    
    for src_f in os.scandir(src_folder):
        for dst_f in os.scandir(dst_folder):
            if src_f.name.endswith(ext) and os.path.basename(src_f) == os.path.basename(dst_f):
                # copy file
                    shutil.copyfile(src_f, dst_f)
                    copied_files.append(dst_f)
    print(copied_files)
    
    for txt_file in copied_files:
        file_root = os.path.splitext(txt_file)[0]
        zip_file_name = file_root + '.zip'
        with zipfile.ZipFile(zip_file_name, mode='w') as zf:
            zf.write(txt_file, os.path.basename(txt_file))
    

    Works as expected