Выборочное копирование — автоматизируйте скучные вещи

У меня проблема с функцией os.walk() в моем коде.

#! /usr/bin/env python3
# selectiveCopy.py - walks through a folder and copies all pdf files
# and puts them in a new pdf only folder

import os, shutil

def selectiveCopy(folder, destination):

    #walks through folder using os.walk(folder)
    for foldername, subfolders, filenames in os.walk(folder):
        print('in os.walk() for ' + folder)
        for filename in filenames:
            # select files with pdf ending
            if filename.endswith('.pdf'):
                print('Copying %s from %s to %s...' % (
                    filename, foldername, destination))
                #shutil.copy(os.path.join(foldername,filename), destination')
    #adds files with folder.endswith('.pdf') to new folder

selectiveCopy('./folder1',
              './folder1/pdf_Folder')

Когда я запускаю код, он никогда не доходит до первого оператора печати, показывающего мне, что он на самом деле находится в функции os.walk. Я не мог понять, в чем проблема. Любая помощь приветствуется. Фактическая папка и место назначения, которые я использую, представляют собой абсолютный путь, а не относительный путь, как в примере ниже.


person Sam    schedule 02.10.2018    source источник


Ответы (2)


Итак, все, что я сделал, это добавил '/' в конец пути к папке и целевому файлу, и теперь все работает отлично. Если у кого-то есть эта проблема, попробуйте сначала это. Не уверен, почему это работает, основываясь только на этом, но это так.

person Sam    schedule 02.10.2018

Не могу комментировать из-за менее 50 репутации (на данный момент).

Да, вы должны добавить / перед путями к файлам, потому что именно так пути к файлам работают в macOS. Если вы заметили, ваш корневой каталог выглядит так: /Users/.... Не это: Users/...

person Mehul Jangir    schedule 23.07.2019