2015-03-09 3 views
0

У меня есть папка с некоторыми файлами внутри, автоматически созданная один раз в день. Предположим, что папка называется «bla20150309» (поэтому автоматически добавляется метка времени).Переместить папку из A в B

Теперь я хочу переместить эту папку вкл. все это в другом месте. Мой код до сих пор:

import time 
import datetime 
import shutil 

ts = time.time() 
st = datetime.datetime.fromtimestamp(ts).strftime('%Y%m%d') 

def copyDirectory(src, dest): 
    try: 
     shutil.copytree(src, dest) 
    # Directories are the same 
    except shutil.Error as e: 
     print('Directory not copied. Error: %s' % e) 
    # Any error saying that the directory doesn't exist 
    except OSError as e: 
     print('Directory not copied. Error: %s' % e) 

copyDirectory("D:/bla%s","E:/hello%s") % (st, st) 

Так что я хочу, чтобы переместить папку «bla20150309» на диске D в «hello20150309» на диске Е (я уже читал где-то здесь, что вам нужно shutil вместо os.move, если вы сделаете это . вид операции между различными жесткими дисками новой hello20150309 папки на E еще не существует и должна быть создана с помощью функции копирования

Я получаю ошибку до сих пор при выполнении моего кода:.

TypeError: unsupported operand type(s) for %: 'NoneType' and 'tuple' 

Любой идея Как исправить это?

+0

Пожалуйста, используйте строковый формат: «D:/bla {}». Format (st) – RvdK

+0

Не могли бы вы предоставить нам полное * исключение, которое вы получите? –

+0

Кроме того, почему бы просто не использовать 'datetime.date.today(). Strftime ('% Y% m% d')' вместо использования 'time.time()' и 'datetime.datetime.fromtimestamp()'? Даже для 'datetime.datetime' вы можете использовать' datetime.datetime.now() ', не нужно включать сюда модуль' time'. –

ответ

2

Вам необходимо отформатировать имена своих каталогов до, передавая их в вашу функцию. То, что вы сейчас находитесь:

copyDirectory("D:/bla%s","E:/hello%s") % (st, st) 

не будет работать, вы хотите:

copyDirectory("D:/bla%s" % st, "E:/hello%s" % st) 

В противном случае вы пытаетесь использовать оператор % на copyDirectory() значения функции возврата, который бывает None в этом случае.

+0

Awwww Это всегда такие незначительные вещи ... что болит. Большое спасибо, отлично работает! – GeoEki

Смежные вопросы