-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathextract.py
42 lines (36 loc) · 1.51 KB
/
extract.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
import sys
import os
try:
import zipfile
except ImportError:
import pip
pip.main(["install", "zipfile"])
import zipfile
file_list = [file_name for file_name in os.listdir() if file_name.endswith('.zip')]
if len(file_list) == 0:
print("当前目录下", os.getcwd(), "未发现zip文件")
sys.exit()
else:
for index, file_name in enumerate(file_list, 1):
print(index, file_name)
index = int(input("请输入要处理的压缩包编号:"))
file_name = file_list[index - 1]
# 打开原始压缩文件
zip_file = zipfile.ZipFile(file_name, 'r')
# 创建一个新的压缩文件
new_zip_file = zipfile.ZipFile("已处理-" + file_name, 'w')
# 遍历原始压缩文件中的所有文件
for file_name in zip_file.namelist():
# 打开每个学生的压缩文件
inner_zip_file = zipfile.ZipFile(zip_file.open(file_name), 'r')
decoded_name = '.'.join(file_name.encode('cp437').decode('utf8').split('.')[:-1])
# 遍历学生压缩包中的每个文件
for inner_file_name in inner_zip_file.namelist():
inner_decoded_name = inner_file_name.encode('cp437').decode('utf8')
# 如果文件名不是需要删除的文件,则将其写入新的压缩文件中
if '学院' not in inner_decoded_name or '.doc' not in inner_decoded_name:
file_content: bytes = inner_zip_file.read(inner_file_name)
new_zip_file.writestr(r"{}/{}".format(decoded_name, inner_decoded_name), file_content)
# 关闭压缩文件
zip_file.close()
new_zip_file.close()