【问题标题】:How to clone files with Python?如何使用 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/

【问题讨论】:

  • 这是文件系统的特性吗?
  • 您是否正在寻找 cli 解决方案?
  • 你只需要牛缓冲吗?在 python 中,这通常被称为mmap 我无法在 osx 上找到任何关于牛文件的信息...
  • 我收回来,我刚刚发现一篇关于 APFS 添加牛的文章(除此之外......)

标签: python macos filesystems 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 等的强大功能并没有多大意义。编译的解决方案需要完成所有工作各种系统查找和(可能是错误的)跳舞跟上。所以我想说你最好坚持使用能满足你特殊需要的工具。
    猜你喜欢
    • 1970-01-01
    • 2021-12-11
    • 2018-07-15
    • 2020-03-25
    • 2012-03-28
    • 2014-02-03
    • 1970-01-01
    • 2016-04-02
    • 1970-01-01
    相关资源
    最近更新 更多