【发布时间】: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