Мда несложно называется, вызывает кучу ошибок, срабатывает только 1 раз и для 1 файла когда еще нет структуры папок.
Вот код для примера
# -*- coding: cp1251 -*-
import sys
import os
# import os.path
import shutil
def ask_ok(prompt=u"[Y(да)/N(нет)] ?", retries=3, pretense=u"Введите 'Y' чтобы ответить 'да', или 'N' для ответа 'нет' !"):
u"Задает вопрос пользователю, в зависимости от ответа возвращает true или false"
try:
in_encoding=sys.stdin.encoding #такого свойства может не быть
if in_encoding==None: raise # или может вернуть None
except: in_encoding='cp1251' # или utf-8 для unix, хотя сюда не должно попадать на unix
while True:
print prompt, #запятая чтобы убрать перевод строки
ans=raw_input()
ans=''.join(ans.split()) # это убирает пробелы, возвраты каретки, переводы строк (иногда появляются при вводе)
if type(ans)==str: ans=unicode(ans,in_encoding) #защита от ошибки если входная строка уже юникод (так бывает)
if ans in (u"y", u"Y", u"'Y'", u"yes", u"да"): return True
if ans in (u"n", u"N", u"'N'", u"no", u"нет"): return False
retries = retries - 1
if retries < 0:
raise IOError('invalid user input')
print pretense
def main():
listfile=[[r"fortest.txt",r".\testbackup\fortest.txt"],\
[r"fortest1.txt",r".\testbackup\fortest1.txt"],\
[r".\fortestd\fortest.txt",r".\testbackup\fortestd\fortest.txt"],\
[r".\fortestd\fortest1.txt",r".\testbackup\fortestd\fortest1.txt"]]
for record in listfile:
tdir=os.path.dirname(record[1])
f=True
while f:
try:
os.makedirs(tdir)
shutil.move(record[0], tdir)
f=False
print u"переместил %s" % record[0]
except IOError as err:
print record[0],
print err
f=ask_ok(u"Повторить? [Y(да)/N(нет)] ?")
if __name__ == '__main__':
main()
raw_input(u'Press Enter to exit')
тут еще как то надо прикрутить проверки на существование папок, ещё и рекурсивно.
Подскажите как файлы по списку listfile переместить в testbackup с путями.