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)
我的 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)