Moving folder contents to another -- CopyTree not working

92 views Asked by At

I am trying to move the contents from one folder to another while excluding some types of files. The script used so far,

OD_daily_files = "C:\\Users\\" + checkuser + "\\Gas South\\SRM Team - General\\Risk Management\\Storage\\EBB Downloads\\Daily_Files"
SD_daily_files = "S:\\Supply\\Risk Management\\Daily auto downloads\\Storage\\Daily_Files"
files = os.listdir(OD_daily_files)
       for x in files:
           shutil.copytree(OD_daily_files + "\\" + x, SD_daily_files, 
                       ignore=ignore_patterns('File_Examples*', '*.lnk', '*.pptx', '*.accdb', '*.bat'))

I keep getting the following error,

NotADirectoryError: [WinError 267] The directory name is invalid: 'C:\\Users\\GAS02224\\Gas South\\SRM Team - General\\Risk Management\\Storage\\EBB Downloads\\Daily_Files\\Access_Storage_Rev7.bat'

This file is in that directory/folder.

2

There are 2 answers

1
Eftal Gezer On

Use r-string.

OD_daily_files = r"C:\\Users\\" + checkuser + r"\\Gas South\\SRM Team - General\\Risk Management\\Storage\\EBB Downloads\\Daily_Files"
SD_daily_files = r"S:\\Supply\\Risk Management\\Daily auto downloads\\Storage\\Daily_Files"
files = os.listdir(OD_daily_files)
       for x in files:
           shutil.copytree(OD_daily_files + "\\" + x, SD_daily_files, 
                       ignore=ignore_patterns('File_Examples*', '*.lnk', '*.pptx', '*.accdb', '*.bat'))
0
Cordell Jones On

This was solved with the below code,

if checkuser != "ROBOT":
    OD_daily_files = "C:\\Users\\" + checkuser + "\\Gas South\\SRM Team - General\\Risk Management\\Storage\\EBB Downloads\\Daily_Files"
    SD_daily_files = "S:\\Supply\\Risk Management\\Daily auto downloads\\Storage\\Daily_Files"
    files = os.listdir(OD_daily_files)
    for x in files:
        try:
            shutil.copy(OD_daily_files + "\\" + x, SD_daily_files)
            print(x + " file was copied over to the S Drive.")
        except:
            print("")
            print(x + " file and/or folder was not copied over.")
            print("")
            next