Файлы Shutil.copy() с несколькими параметрами и параметрами, отредактированными в коде.

avatar
Craig Emslie
1 июля 2021 в 16:00
29
0
0

Я пытаюсь скопировать файлы из 3 родительских путей в дочерние пути с разными именами, и я изо всех сил пытаюсь заставить его выполнить последнюю часть головоломки! У меня есть 2 списка:

Cust относятся к и относятся к числу:

Джо = 010

Боб (имя родителя) = 016

Отметка = 018

Джон (сын Боба) = 016

Питер (сын Боба) = 016

Мне удалось заставить свой код проверять, существует ли путь к файлу в исходных папках, и если его нет, то заменить John или Peter (дочерние) на Bob (родительский). Он правильно возвращает пути к файлам.

def copyFiles(cust_list, proj_num):
    cust_list = ['Joe', 'Bob', 'Mark', 'John', 'Peter']
    proj_num = ['010', '016', '018']    
    for cust, num in zip(cust_list, proj_num):
        source = f'C:/Users/Desktop/Automation_Testing/Live_{num} ({cust})/01_Docs_Issued/'
        dest = f'C:/Users/Desktop/Automation_Testing/new_{cust}/Data/'

        if not os.path.exists(source):
        
            new_cust = cust.replace(cust, 'Bob')
            source = source.replace(cust, new_cust)
        
        print(source)

выход

'C:/Users/Desktop/Automation_Testing/Live_010 (Joe)/01_Docs_Issued/'
'C:/Users/Desktop/Automation_Testing/Live_016 (Bob)/01_Docs_Issued/'
'C:/Users/Desktop/Automation_Testing/Live_018 (Mark)/01_Docs_Issued/'
'C:/Users/Desktop/Automation_Testing/Live_016 (Bob)/01_Docs_Issued/'
'C:/Users/Desktop/Automation_Testing/Live_016 (Bob)/01_Docs_Issued/'

То, что я не могу сделать, это скопировать файл из каждой исходной папки, которая содержит определенную строку в имени файла и расширении (.pdf), в каждый из указанных выше путей назначения для каждого имени клиента в месте назначения. Я ожидаю скопировать файл в следующие места.

C:/Users/Desktop/Automation_Testing/new_Joe/Data/'
C:/Users/Desktop/Automation_Testing/new_Bob/Data/'
C:/Users/Desktop/Automation_Testing/new_Mark/Data/'
C:/Users/Desktop/Automation_Testing/new_John/Data/'
C:/Users/Desktop/Automation_Testing/new_Peter/Data/'

Я перепробовал много вариантов for, if, и я просто не могу скопировать файлы.

for file in os.listdir(source):
            
            if 'INVOICE' in file.upper():
                file_type = '.pdf'
                if file_type == True:
                shutil.copy(os.path.join(source, file), dest)
print(os.path.join(dest, file))

Надеюсь, это имеет смысл, и заранее благодарю вас за любые вопросы или советы.

Источник
Lenormju
2 июля 2021 в 07:59
0

Извините, но это не имеет смысла. Ваше объяснение проблемы для меня недостаточно, я не понял в чем проблема. Можете ли вы предоставить минимально воспроизводимый пример или использовать методы отладки, чтобы найти источник проблемы?

Craig Emslie
2 июля 2021 в 13:27
0

Привет, спасибо за ваш ответ. Извините, что не ясно, это немного сложно объяснить. В основном я пытаюсь переместить файл из каждой из родительских папок в дочерние папки на основе списка клиентов. Но если пользовательское имя отсутствует в родительской папке, замените дочернее имя на родительское и скопируйте файл. Спасибо за попытку понять. Я буду продолжать подключаться и посмотреть, смогу ли я это решить.

Ответы (0)