bytes = "abc123"
with open(file, 'rb') as in:
info = struct.unpack('<H', in.read(struct.calcsize('<H')))[0]
info2 = infile.read(info)
if info2 == SIGNATURE:
return
如何在for循环~10k文件中快速打开文件我只需要6-10个第一个字节来验证文件是否在之前被加密并跳过它如果可能只打开X个字节,这将很快为每个文件?
答案 0 :(得分:0)
这不是Python限制,而是文件系统和操作系统限制。
如果您需要加快操作速度,那么最好先将数据收集或索引到数据库中的某个快速访问结构,而不是尝试以原始格式访问它。
答案 1 :(得分:0)
正如BrenBarn评论的那样,还有很多工作要做。我会将您的脚本更改为以下内容:
bytes = "abc123"
read_size = struct.calcsize('<H')
with open(file, 'rb') as infile:
info, = struct.unpack('<H', infile.read(read_size))
info2 = infile.read(info)
if info2 == SIGNATURE:
return
这些变化很小,可能不会在执行时间上产生显着差异,因为你的瓶颈在于打开10k文件,但是避免不必要的函数/方法调用总是很好,并且选择带有info的第一个元素,是比使用[0]快一点点。
编辑:刚刚注意到with语句代替原始代码中的infile。另外,修复了两个读取调用以使用正确的变量。