gpt4 book ai didi

python - 正则表达式以匹配 Python 中设置的 rar 存档文件中的第一个文件

转载 作者:行者123 更新时间:2023-11-28 20:54:08 25 4
gpt4 key购买 nike

我需要解压缩目录中的所有文件,为此我需要找到集合中的第一个文件。我目前正在使用一堆 if 语句和循环来执行此操作。我可以使用正则表达式来做到这一点吗?

这是我需要匹配的文件列表:

yes.rar
yes.part1.rar
yes.part01.rar
yes.part001.rar
yes.r01
yes.r001

不应匹配这些:

no.part2.rar
no.part02.rar
no.part002.rar
no.part011.rar
no.r002
no.r02

我在 this 上发现了类似的正则表达式线程,但似乎 Python 不支持可变长度环视。单行正则表达式会很复杂,但我会很好地记录它,这不是问题。这只是您解决问题的其中一个问题。

提前谢谢你们。

:)

最佳答案

不要依赖文件名来确定哪个是第一个。您最终会发现一个极端情况,在这种情况下您会得到错误的文件。

RAR's headers假设它们是在较新版本的 RAR 中创建的,将告诉您哪个文件是卷中的第一个文件。

HEAD_FLAGS Bit flags:
2 bytes

0x0100 - First volume (set only by RAR 3.0 and later)

因此打开每个文件并检查 RAR header ,专门查找指示哪个文件是第一卷的标志。这永远不会失败,只要存档没有损坏。


更新:我刚刚通过查看十六进制编辑器中的一些跨越文件来确认这一点。文件头的构造与上面的链接完全相同。这只是打开文件并读取该标志的 header 的问题。带有该标志的文件是第一卷。

关于python - 正则表达式以匹配 Python 中设置的 rar 存档文件中的第一个文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2537882/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com