具有通配符支持的Python Windows文件复制
问题内容:
我一直在这样做:
result = subprocess.call(['copy', '123*.xml', 'out_folder\\.', '/y'])
if result == 0:
do_something()
else:
do_something_else()
直到今天,我开始研究pywin32模块,然后才看到诸如win32file.CopyFiles()之类的函数,但是后来我发现它可能不支持将文件复制到目录中。也许此功能隐藏在某个地方,但我还没有找到它。
我也尝试过“ glob”和“ shutil”的组合,但是如果有很多文件,“ glob”的运行速度会非常慢。
那么,您如何用Python模拟该Windows命令?
copy 123*.xml out_folder\. /y
问题答案:
以下代码提供了一个可移植的实现。
请注意,我使用的是iglob(在Python 2.5中添加了),它创建了一个生成器,因此它不会首先加载内存中的整个文件列表(glob会这样做)。
from glob import iglob
from shutil import copy
from os.path import join
def copy_files(src_glob, dst_folder):
for fname in iglob(src_glob):
copy(fname, join(dst_folder, fname))
if __name__=='__main__':
copy_files("123*.xml", "out_folder")
附加文档: