2017-02-10 8 views
-1

У меня есть таблица с двумя столбцами со ссылками на каталог и/или файл и NULL Каждая запись имеет имя столбца «NAME» как имя нового каталога Что-то вроде этоPython: скопируйте файл из каталога в другое, прочитав столбцы уровня

... NAME HOTLINK1     HOTLINK2 
... name1 C:\...\directory1   C:\...\directory6\file 
... name2 C:\...\directory2   NULL 
... name3 C:\...\directory5\file C:\...\directory 
... name4 NULL      NULL 

Я пытаюсь написать код, чтобы скопировать все содержимое каталога (включая подкаталоги) и файл с HOTLINK1 и HOTLINK2 в новый каталог «NAME».

Итак:

  • если Hotlink является каталогом >>> скопировать все содержимое каталога (включая подкаталоги)

  • если Hotlink файл >>> скопировать файл

  • если есть NULL >> pass.

+0

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

+0

Извините, вы правы. Я изменил тип запроса. С последним ответом я пишу код. –

ответ

0

У вас уже есть довольно понятный метод на человеческом языке, возможно, вам просто нужно несколько советов, чтобы написать их в кодах Python.

  1. Как читать каждую строку и столбцы ссылок, разбор строк по символам новой строки и разбиение по пробелам должно работать.
  2. Как определить, является ли путь файлом или каталогом (или, по крайней мере, существует)? Попробуйте os.path модуль.
  3. Как скопировать файл или папку? Попробуйте shutil модуль.
  4. Остерегайтесь обратной косой черты в пути к файлу системы Windows, ее необходимо избегать.
+0

Человеческий язык ясен, но я начинаю Pyhton :-). Я пытаюсь использовать логику логики . –

0
import os 
print(os.path.isdir("/home/el")) 

результат Верно или Ложные

print(os.path.exists("/home/el/myfile.txt")) 

результат ИСТИНА или ЛОЖЬ

import shutil 
shutil.copytree('hotlink1', 'hotlink2') 
0

Благодаря предложениям @Dev Jalla и @Neo X меня написать этот код, который работает. Он использовал значения одного столбца HOTLINK1. Теперь я не знаю, чтобы добавить код, чтобы произвести то же самое со значениями HOTLINK2 тогда папка калле «NAME» уже существует:

import shutil 
    import csv 
    import os 

    source='D:\\Prova_copy_pyhton\\' 
    with open('D:\\Prova_copy_pyhton\\list.csv') as csvfile: 
      reader = csv.DictReader(csvfile, delimiter=';') 
      for row in reader: 

       a = row['hotlink1'] 
       fa= os.path.basename(a) 
       out = row['name'] 

       if os.path.isdir(a): 
       shutil.copytree(a, os.path.join(source, out)) 

       elif os.path.exists(a): 
        try: 
         os.stat(os.path.join(source, out)) 
        except: 
         os.mkdir(os.path.join(source, out)) 
         shutil.copy(a, source+out+'\\'+fa)