Python似乎具有复制文件的功能(例如shutil.copy)和复制目录的功能(例如shutil.copytree),但是我还没有找到能够同时处理两者的函数。当然,检查要复制文件还是目录很简单,但这似乎很奇怪。
shutil.copy
shutil.copytree
确实没有像unixcp -r命令那样工作的标准函数,即同时支持目录和文件以及递归复制吗?在Python中解决此问题的最优雅方法是什么?
cp -r
建议您先致电shutil.copytree,如果引发异常,请重试shutil.copy。
import shutil, errno def copyanything(src, dst): try: shutil.copytree(src, dst) except OSError as exc: # python >2.5 if exc.errno == errno.ENOTDIR: shutil.copy(src, dst) else: raise