Копирование списка путей / файлов в каталог - PullRequest
1 голос
/ 16 октября 2010

Я просто выполняю упражнение, в котором у меня есть список файлов (заданных как абсолютные пути), которые следует скопировать в заданный каталог, если установлен какой-либо флаг. Это моя функция для копирования файлов:

def copy_to(paths, dst):
  if not os.path.exists(dst):
    os.makedirs(dst)

  for path in paths:
    shutil.copy(path, dst)

Однако данное решение выглядит иначе:

def copy_to(paths, dst):
  if not os.path.exists(dst):
    os.makedirs(dst)

  for path in paths:
    basename = os.path.basename(path)     
    shutil.copy(path, os.path.join(dst, basename))

Получает ли базовое имя пути и объединяет его с путем, куда копировать, в действительно нужное здесь?

Ответы [ 3 ]

3 голосов
/ 16 октября 2010

Согласно текущему руководству , оно не требуется:

shutil.copy (src, dst) Скопировать файл src к файлу или каталогу dst. Если dst - это каталог, файл с то же самое базовое имя, что и src, создано (или перезаписано) в каталоге указано. Биты разрешения копируются. src и dst - имена путей, заданные как строки.

В нем говорится, что если dst является каталогом, copy() помещает файл с таким же базовым именем src на dst

1 голос
/ 16 октября 2010

уже ответил, но несколько моментов я заметил. Использование dir здесь - отслеживание встроенного dir. Кроме того, что такое os.path.makedirs? На моем питоне (2.6) это дает

>>> os.path.makedirs
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: 'module' object has no attribute 'makedirs'

Вы имеете в виду os.makedirs?

1 голос
/ 16 октября 2010

Это не нужно.Документация гласит:

Скопируйте файл src в файл или каталог dst.Если dst является каталогом, в указанном каталоге создается (или перезаписывается) файл с тем же базовым именем, что и src.

Данное решение делает это явно, а не позволяет shutil.copy делать это неявно,Это единственное отличие.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...