Wan*_*wei 9 python file pywin32 wildcard
我一直这样做:
result = subprocess.call(['copy', '123*.xml', 'out_folder\\.', '/y'])
if result == 0:
do_something()
else:
do_something_else()
Run Code Online (Sandbox Code Playgroud)
直到今天我开始研究pywin32模块,然后我看到了像win32file.CopyFiles()这样的函数,但后来我发现它可能不支持将文件复制到目录.也许这个功能隐藏在某处,但我还没有找到它.
我也试过"glob"和"shutil"组合,但如果有很多文件,"glob"会非常慢.
那么,你如何用Python模拟这个Windows命令?
copy 123*.xml out_folder\. /y
Run Code Online (Sandbox Code Playgroud)
Fre*_*rik 10
以下代码提供了可移植的实现.
请注意,我正在使用创建生成器的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")
Run Code Online (Sandbox Code Playgroud)
附加文件:
以下示例相当天真 - 如果出现问题则不进行任何检查,并且不会创建任何目录,但可能会执行您想要的操作:
import glob
import shutil
for path in glob.iglob('123*.xml'):
shutil.copy(path, 'out_folder/%s' % path)
Run Code Online (Sandbox Code Playgroud)
另见:http://timgolden.me.uk/python/win32_how_do_i/copy-a-file.html
使用win32file/SHFileOperation复制似乎更具功能性,但不是那么便携,而且使用起来更复杂.
| 归档时间: |
|
| 查看次数: |
9981 次 |
| 最近记录: |