我正在编写一个脚本来将编译后的文件从一个位置复制到另一个位置.
我现在所拥有的是这样的:
import os
import shutil
shutil.copy2 (src, dst)
#... many more shutil.copy commands
#src is a filename string
#dst is the directory where the file is to be copied
Run Code Online (Sandbox Code Playgroud)
我的问题是,许多被复制的文件都是大文件,并不是所有文件都在每个编译周期中重新编译.理想情况下,我只想复制此脚本中已更改的文件.有什么方法可以做到这一点吗?
And*_*Dog 13
你可以利用文件修改时间,如果这对你来说足够了:
# If more than 1 second difference
if os.stat(src).st_mtime - os.stat(dest).st_mtime > 1:
shutil.copy2 (src, dst)
Run Code Online (Sandbox Code Playgroud)
或者像rsync一样调用同步工具.
小智 11
您可以使用distutils.file_util.copy_file通过设置可选参数来执行智能复制:update=1.
还有一个版本可以复制整个目录distutils.dir_util.copy_tree.
然后,您可以通过启用日志记录来验证其中任何一个是否真正有效并且只复制所需的文件:
import distutils.log
import distutils.dir_util
distutils.log.set_verbosity(distutils.log.DEBUG)
distutils.dir_util.copy_tree(
src_dir,
dst_dir,
update=1,
verbose=1,
)
Run Code Online (Sandbox Code Playgroud)
打印哪些文件被复制.
| 归档时间: |
|
| 查看次数: |
7661 次 |
| 最近记录: |