【问题标题】:Create unique identifier for files using Python使用 Python 为文件创建唯一标识符
【发布时间】:2020-07-15 08:35:17
【问题描述】:

我正在寻找一种可靠的解决方案来定义测量数据文件的唯一标识符。我从不同来源收集数据,主要来自网络存储。数据文件可能会被重命名并多次复制到不同的位置。该方法只需要在Windows平台上运行即可。到目前为止,我做了以下工作:根据上次修改时间和文件大小创建一个 ID。我假设该文件只会在测量过程中创建一次,之后永远不会被修改。这是我当前的实现:

import pathlib
import datetime

def file_uid(file):

    fname = pathlib.Path(file)
    mod_time = datetime.datetime.fromtimestamp(fname.stat().st_mtime).strftime("%d.%m.%Y %H:%M:%S")
    file_size = fname.stat().st_size
    uid = '%s%s%s' %(mod_time,'_',str(file_size))
    return uid

这个想法可行吗,还是我总体上错过了什么?为这个问题完成一个强大的解决方案的最佳实践是什么?或者我应该使用一些校验和算法,推荐什么?

【问题讨论】:

  • 文件可能被重命名和复制,但您仍想将它们识别为同一个文件?文件的哈希将是测试这一点的好方法。见Hashing a file in Python
  • 听起来你要重新发明轮子了。那个轮子叫 git
  • @mvp 对于“测量数据文件”?如果这些很大,git 是个糟糕的选择,对吧?
  • @mvp 你是绝对正确的问题是数据混乱。不幸的是,我对此没有任何影响。使用“dspencer”形式的 Git 是由于二进制数据的大小不是一个好的选择。我们在其他方面使用 ASAM ODS-Server 概念。但不幸的是不在这里。

标签: python checksum uniqueidentifier uid


【解决方案1】:

我建议为每个文件分配一个简短的 UDID。你可以使用诸如shortuuid之类的东西:

pip install shortuuid

然后只是

shortuuid.ShortUUID().random(length=22)

【讨论】:

  • 感谢您的想法。可惜我没有指出。唯一的 id 也需要与文件中的数据相关联。为了避免根据文件名读取不同的文件,并且可能只是获得相同数据的存储位置。由于有人重命名或重新定位文件。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-05-05
  • 2021-10-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多