具有通配符支持的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")
附加文档: