如何使用 Python 克隆文件?
Posted
技术标签:
【中文标题】如何使用 Python 克隆文件?【英文标题】:How to clone files with Python? 【发布时间】:2018-06-05 08:12:41 【问题描述】:在 macos 上使用 bash,我可以使用 cp -c
创建 COW 文件克隆。是否有提供相同功能的 Python 库? shutil 中的复制功能似乎没有提到克隆。
在 APFS 克隆上:https://developer.apple.com/library/content/documentation/FileManagement/Conceptual/APFS_Guide/Features/Features.html
在 BSD 克隆文件上:http://www.manpagez.com/man/2/clonefile/
【问题讨论】:
这是文件系统的特性吗? ***.com/questions/123198/… 您是否正在寻找 cli 解决方案? 你只需要牛缓冲吗?在 python 中,这通常被称为mmap
我无法在 osx 上找到任何关于牛文件的信息...
我收回来,我刚刚发现一篇关于 APFS 添加牛的文章(除此之外......)
【参考方案1】:
Python 标准库不支持克隆文件。
要在子进程中使用cp -c
克隆文件,您可以使用此函数:
def clonefile(source, dest):
subprocess.check_output(["cp", "-c", source, dest])
【讨论】:
【参考方案2】:好的,我将其标记为重复,但不知道复制和克隆之间的区别。
这是在 Python 中尽可能详细地复制文件的说明的位置: https://docs.python.org/3.6/library/shutil.html
它以以下警告开头: 警告即使是更高级的文件复制函数(shutil.copy()、shutil.copy2())也无法复制所有文件元数据。
如果您想要的是文件的操作系统克隆,您将需要运行系统调用。该系统调用将需要特定于操作系统,并且该调用将从以下问题中提取: Calling an external command in Python
因此,请查看复制库,看看是否可以获得足够的详细信息,以及是否无法使用系统特定的调用。
【讨论】:
您对外部命令的引用可能很有用,但 OP 已经提到shutil
不是可接受的解决方案。
我发现的所有文档都表明,shutil 与 Python 一样深......我承认,我对答案感到有点高兴。
而且,坦率地说,对于 Python 来说,拥有足够特定于系统的标准库以跟上 Bash、ksh 等的强大功能并没有多大意义。编译的解决方案需要完成所有工作各种系统查找和(可能是错误的)跳舞跟上。所以我想说你最好坚持使用能满足你特殊需要的工具。以上是关于如何使用 Python 克隆文件?的主要内容,如果未能解决你的问题,请参考以下文章