2015-08-05 2 views
0

My ant script создает папку с датой и временем enf папки в папке D: \ test \.Папка подстановки python с glob

Как скопировать D: \ Test \ apps_20150709_updates_ 2015_08_03_13-54 \ приложения \ \ расстояние пакеты \ папки в D: \ Test \ пакеты. Дата и время всегда меняются (2015_08_03_13-54). Я пробовал использовать команду glob в этом скрипте, вы можете мне помочь?

import os, shutil, glob 

SOURCE = glob.glob("D:\\test\\apps_20150709_updates_*\\apps\\dist\\packages\\") 

DEST = "D:\\test\\packages\\" 

shutil.copytree(SOURCE, DEST) 

print os.listdir(DEST) 

***D:\test>python copy_files.py 
Traceback (most recent call last): 
    File "copy_files.py", line 6, in <module> 
    shutil.copytree(SOURCE, DEST) 
    File "C:\Python27\lib\shutil.py", line 171, in copytree 
    names = os.listdir(src) 
TypeError: coercing to Unicode: need string or buffer, list found 
D:\test>*** 
+0

Может ли когда-нибудь более одной папки, совпадающей с 'D: \ Test \ apps_20150709_updates_ *' части? – martineau

+0

Дата и время всегда автоматически создаются d: \ test \ apps_20150709_updates_2015_08_03_13-54 \ apps \ dist \ packages \ d: \ test \ apps_20150709_updates_2015_08_03_14-20 \ apps \ dist \ packages \ есть много одинаковых папок. Я хочу только скопировать папки и подпапки пакетов в d: \ test \ packages. – intelceptor

+0

Мой вопрос: может ли быть, например, папка 'd: \ test \ apps_20150709_updates_2015_08_04_13-54 \ apps \ dist \ packages'? – martineau

ответ

0

Как указывает другой ответ, вы передаете список shutil.copytree(), который ожидает, что каждый аргумент будет строкой. Чтобы исправить это, попробуйте следующее, который будет копировать все соответствующие исходные папки в папку назначения:

import os, shutil, glob 

SOURCE = glob.glob("D:\\test\\apps_20150709_updates_*\\apps\\dist\\packages\\") 
DEST = "D:\\test\\packages\\" 

for folder in SOURCE: 
    shutil.copytree(folder, DEST) 

print os.listdir(DEST) 
+0

Большое спасибо. он работает :)) – intelceptor

+0

Добро пожаловать. Также обратите внимание, что в Python вы можете использовать 'r 'D: \ test \ apps_20150709_updates _ * \ apps \ dist \ packages" 'для строк с обратными косыми чертами в них (вам не нужны конечные). – martineau

0

glob.glob возвращает список совпадающих путей или пустой список в случае не было найдено ни одного матча.

shutil.copytreeожидает строку в первом параметре («нужна строка или буфер») и вы предоставили список вместо («списка найдены»).

+0

Можете ли вы объяснить? im новое в python. – intelceptor

+0

@intelceptor: Вы передаете аргумент неправильного типа 'shutil.copytree()'. – martineau

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