Python 带 glob 的通配符文件夹

Python wildcard folder with 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>***

glob.glob returns 匹配路径的 列表 或者一个空列表 以防找不到匹配项.

shutil.copytree 在第一个参数 ("need string or buffer") 中需要一个字符串 而您提供了列表 ("list found").

正如另一个答案所指出的,您正在将一个列表传递给 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)