【发布时间】:2021-06-23 04:57:33
【问题描述】:
我正在尝试从电子邮件 (.msg) 中提取附件 (zip),然后从 zip 文件中提取唯一的一个文档 (xls)。
提取 xls 后,我想根据 .msg 中的关键字重命名它(即,如果它包含“支付宝”,则在 xls 文件名中附加“_alipay”,否则为“_tng”)
import os
import extract_msg
import fnmatch
import zipfile
import glob
Tk().withdraw()
directory = askdirectory(title='Yo select your folder please')
input_dir = directory + "/"
os.chdir(input_dir)
pwd = '123'
keyword = '*Alipay*'
for email in os.listdir(input_dir):
if email.endswith('.msg'):
email_path = os.path.join(input_dir, email)
if fnmatch.fnmatch(email, keyword):
trans_type = '_alipay'
else:
trans_type = '_tng'
msg = extract_msg.Message(email)
msg.save_attachments()
msg.close()
for em_zip in glob.glob('*.zip'):
zip_path = os.path.join(input_dir, em_zip)
with zipfile.ZipFile(zip_path, 'r') as zf:
zf.extractall(pwd=bytes(pwd, 'utf-8'))
os.rename(zip_path, os.path.splitext(zip_path)[0] + trans_type + '.xls')
我得到的错误信息是
Traceback(最近一次调用最后一次): 文件“C:\Users\cheeh\Desktop\PyCharmPortable\PycharmProjects\ocrpdf\Alipay.py”,第 71 行,在 os.rename(zip_path, os.path.splitext(zip_path)[0] + trans_type + '.xls') PermissionError: [WinError 32] 该进程无法访问该文件,因为它正被另一个进程使用:'C:/Users/cheeh/Desktop/cimb/CDFSB60006039760617520201221.zip' -> 'C:/Users/cheeh/Desktop/cimb /CDFSB60006039760617520201221_alipay.xls'
谢谢
【问题讨论】:
标签: python for-loop rename zipfile