Python | Перемещение указано c Файлы в папке, созданной пользователем - PullRequest
1 голос
/ 07 января 2020

Я написал короткий сценарий, в котором я хочу переместить все файлы .CR2 (на следующем шаге я хочу выбрать между первыми первыми 2 или 6 файлами) в папку, которая ранее была создана как raw_input.

import os
from os import path
import shutil
import itertools

proname = raw_input("Please Name the Productfolder: ")

path = "/Volumes/01_Produktfotos/_2020-01-JANUAR/"

os.mkdir(proname)
os.chdir(proname)
os.makedirs('_final')
os.makedirs('_images')
os.makedirs('_psd')

sourcepath = '/Volumes/01_Produktfotos/_2020-01-JANUAR/03.01/'
sourcefiles = os.listdir(sourcepath)
destinationpath = '/Volumes/01_Produktfotos/_2020-01-JANUAR/03.01/%proname/_images/'
for file in sourcefiles:
    if file.endswith('.CR2'):
        shutil.move(os.path.join(sourcepath,file), os.path.join(destinationpath,file))

В настоящий момент сценарий создает пользовательскую папку c (местоимение) и создает внутри нее подпапку _images, _final & _psd.

Моя проблема заключается в том, что не перемещает файлы из верхней папки в созданной пользователем папке.

Идеальный результат будет, если

  1. Я могу выбрать Имя папки продукта
  2. Создает внутри папки подпапка _images, _final & _psd
  3. Я могу выбрать, если я хочу, чтобы первые 2-6 .CR2 файлы находились внутри подпапки _images созданной папки продукта
  4. Сценарий выполняется пока не осталось файлов .CR2

Любая помощь или советы приветствуются (:

Спасибо заранее

Ответы [ 2 ]

0 голосов
/ 07 января 2020

Следующее изменение решило проблему с перемещением файлов .CR2 в указанной папке c proname:

destinationpath = os.path.join('/Volumes/01_Produktfotos/_2020-01-JANUAR/03.01/', proname, '_images')

Теперь я на следующем шаге, где не все файлы .CR2 должны быть переехал. Только первые 2 или 6 файлов.

0 голосов
/ 07 января 2020

Как и в do c, dst - это каталог, а не файл.

shutil.move (sr c, dst) Рекурсивное перемещение файл или каталог (sr c) в другое место (dst). Если местом назначения является существующий каталог, то sr c перемещается в этот каталог. Если место назначения уже существует, но не является каталогом, оно может быть перезаписано в зависимости от семантики os.rename ().

# Before:
shutil.move(os.path.join(sourcepath,file), os.path.join(destinationpath,file))

# After:
shutil.move(os.path.join(sourcepath,file), destinationpath))

будет работать.

...