带有glob的Python通配符文件夹

时间:2015-08-05 17:58:14

标签: python directory wildcard glob

我的ant脚本在D:\ test \文件夹中创建一个包含文件夹日期和时间enf的文件夹。

如何将d:\ test \ apps_20150709_updates_ 2015_08_03_13-54 \ apps \ dist \ packages \文件夹复制到D:\ test \ packages。日期和时间始终在变化( 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>***

2 个答案:

答案 0 :(得分:0)

glob.glob会在未找到匹配项的情况下返回匹配路径列表或空列表

shutil.copytree 在第一个参数(“需要字符串或缓冲区”)中需要字符串,而您提供了列表(“找到列表”)。

答案 1 :(得分: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)