小编par*_*adf的帖子

在Python中无需解压缩即可计算zip内容的CRC32,MD5和SHA1

我需要计算zip文件内容的CRC32,MD5和SHA1而不解压缩它们.

到目前为止,我发现了如何为zip文件本身计算这些,例如:

CRC32:

import zlib


zip_name = "test.zip"


def Crc32Hasher(file_path):

    buf_size = 65536
    crc32 = 0

    with open(file_path, 'rb') as f:
        while True:
            data = f.read(buf_size)
            if not data:
                break
            crc32 = zlib.crc32(data, crc32)

    return format(crc32 & 0xFFFFFFFF, '08x')


print(Crc32Hasher(zip_name))
Run Code Online (Sandbox Code Playgroud)

SHA1 :( MD5同样)

import hashlib


zip_name = "test.zip"


def Sha1Hasher(file_path):

    buf_size = 65536
    sha1 = hashlib.sha1()

    with open(file_path, 'rb') as f:
        while True:
            data = f.read(buf_size)
            if not data:
                break
            sha1.update(data)

    return format(sha1.hexdigest())


print(Sha1Hasher(zip_name))
Run Code Online (Sandbox Code Playgroud)

对于zip文件的内容,我可以直接从zip读取CRC32,无需计算如下:

阅读zip内容的CRC32:

import zipfile

zip_name = …
Run Code Online (Sandbox Code Playgroud)

python hash crc32 md5 sha1

6
推荐指数
1
解决办法
2166
查看次数

批次-EnableDelayedExpansion,感叹号和文件/文件夹名称

我在文件和文件夹名称上使用感叹号(!)感到困惑。我创建的批处理读取.txt文件的内容,并将列出的文件从文件夹中排序到子文件夹中。
例如:
source.txt有内:file_1.zip与file_2.zip
调用的文件夹system有file_1.zip,file_2.zip,file_3.zip,等,并批量读取source.txt和这两个文件复制到system/source。

我试图避免启用启用DelayedExpansion,但是在添加文件夹浏览器之后,我找不到比使用它更好的方法了。我需要按照显示:listSources和:listFolders的方式启用它。 我现在的问题不是对文件夹名称进行太多处理(!)(尽管允许这样做很不错),但是允许文件副本带有(!)。

我考虑过逃跑^^!字符或在setlocal和endlocal之间切换,但是我仍在学习如何正确使用它,因此不知道如何处理它。也许有更好的方法?(我不是程序员!)

@echo off
setlocal EnableDelayedExpansion

rem Copy sorted files into destination folder? [Y/N]
set "copyMode=y"
if /i "%copyMode%"=="y" (set appendTitle=[Copy Mode]) else set appendTitle=[Log Mode]

rem Set prefix for output file (used only if copyMode=n)
set prefixMiss=missing_in_

rem Set defaults to launch directory
set rootSource=%~dp0
set rootFolder=%~dp0

:listSources …
Run Code Online (Sandbox Code Playgroud)

batch-file

5
推荐指数
1
解决办法
957
查看次数

标签 统计

batch-file ×1

crc32 ×1

hash ×1

md5 ×1

python ×1

sha1 ×1