正如@rcriii所说,回归是你的功能短路。我不确定你要完成什么,但我认为你只想在给定一个glob-pattern列表的情况下将文件列表从一个dir复制到另一个dir。
如果是这样的话,并给你一个像这样的目录:
.
├── a
│ ├── file1
│ ├── file2
│ └── tmp3
└── b这个功能应该让你有一个更清洁的方法来做到这一点(像for i in range...这样的东西通常不像你在这里那样使用。)另外,如果你不能改变回来,改变dirs有时会给你带来问题。
import shutil
from itertools import chain
from os import path
from glob import glob
def copy_with_patterns(src, dest, patterns):
# add src dir to given patterns
patterns = (path.join(src, x) for x in patterns)
# get filtered list of files
files = set(chain.from_iterable(glob(x) for x in patterns))
# copy files
for filename in files:
shutil.copy(filename, filename.replace(src, dest))像这样调用这个函数:
copy_with_patterns('a', 'b', ['file*'])会让你的目录看起来像这样:
.
├── a
│ ├── file1
│ ├── file2
│ └── tmp3
└── b
├── file1
└── file2