gpt4 book ai didi

python - 使用 Python 匹配拆分 RAR 扩展

转载 作者:太空宇宙 更新时间:2023-11-04 06:24:54 25 4
gpt4 key购买 nike

我在 EventGhost 中使用 Python 脚本来匹配目录中的特定文件类型,并将它们移动到特定位置,以便其他程序对其执行操作。这是整个脚本:

import shutil
import os

SubFileTypes = ('sub','srt','txt')
ZipFileTypes = ('rar','zip','7z','r0')
MediaFileTypes = ('mkv','avi','mp4','wmv')
DownloadName = ''.join(eg.event.payload)
FileName = os.path.basename(DownloadName)
isFolder = os.path.isdir(DownloadName)
eg.globals.tvzip = 'J:\\DL\\TVzip\\'
eg.globals.tvzipdir = eg.globals.tvzip+FileName+'\\'
eg.globals.tvproc = 'J:\\DL\\TVProc\\'

if isFolder == True:
os.mkdir(eg.globals.tvzipdir)
# print 'I\'m a folder!'
for root, dirs, files in os.walk(DownloadName):
for f in files:
if f.endswith(ZipFileTypes):
#print 'I\'m a zip file!'
shutil.copy(os.path.join(root,f),eg.globals.tvzipdir)
if f.endswith(SubFileTypes) or f.endswith(MediaFileTypes):
#print 'I\'m a subtitle or media file!'
shutil.copy(os.path.join(root,f),eg.globals.tvproc)

elif isFolder == False:
shutil.copy(DownloadName,eg.globals.tvproc)
eg.plugins.EventGhost.DisableItem(XmlIdLink(23))
# print 'I\'m NOT a folder!'

else:
print 'I dont know what I am!'

我遇到的具体问题是我需要能够匹配来自 split-rar 格式的每个 .rX 扩展名。这些扩展名从 r0 开始,可以无限数量结束。它们至少是“r+两位数”(r00、r01、r02 等),但我认为它们可以超过两位数,尽管我并不肯定。

有什么方法可以更改我的 ZipFileTypes 列表以包含这些 split-rar 扩展名?还是有别的办法?

最佳答案

您可以使用正则表达式来匹配以 .r 后跟任意数字的文件名:

import re

# -snip-

for f in files:
if f.endswith(ZipFileTypes) or re.search(r'\.r\d+$', f):
# do stuff

re.search() 将在字符串中的任何位置查找匹配项,而 re.match() 将查找完整的字符串匹配项。对于这种情况,因为我们只关心文件扩展名,所以我们将使用 re.search()

正则表达式的结构如下:

  • \.r - 匹配单个句点,后跟 r。要转义的 \ 是必需的,因为 . 否则表示通配符。
  • \d+ - 匹配任意数量的数字。 \d代表一个数字,+代表“前面的1+”
  • $ - 匹配字符串的结尾。

将它们全部放在 \.r\d+$ 中,您就匹配了一个拆分的 rar 扩展。

关于python - 使用 Python 匹配拆分 RAR 扩展,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9010886/

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