我需要检索 .zip 档案,检索 .zip 中的文件并提取其数据。.zip 档案附在电子邮件文件中;我没有使用邮件协议来访问邮箱。我能够解析消息...
...
from email.parser import Parser
...
for fileName in os.listdir(mailDir):
...
message = Parser().parse(open(mailDir + '/' + fileName, 'r'))
...
for part in message.walk():
if part.get_content_type() == 'application/octet-stream':
Run Code Online (Sandbox Code Playgroud)
当我第一次开始编写这段代码时,我正在测试一封带有 .csv 附件的电子邮件,并且在访问附件和提取数据时没有问题,但现在我正在处理带有 .zip 的电子邮件(包含以前使用的.csv)我被卡住了。添加...
import zipfile
Run Code Online (Sandbox Code Playgroud)
...但似乎我需要实际将附加的 .zip 保存到文件系统才能使用 zipfile。我宁愿不这样做,并认为(希望)我可以简单地使用......
zipfile.ZipFile(the_base64_string_from_message, 'r')
Run Code Online (Sandbox Code Playgroud)
但那失败了。如何在不在文件系统中创建 .zip 存档的情况下访问存档?此外,也许我什至不应该使用电子邮件模块(仅使用它以便我可以轻松找到附件)???
我正在努力使用适当的逻辑来比较以下数组:
$a = [
"ip" => [
"1.2.3.4",
"4.3.2.1",
],
"domain" => [
"example.com",
"another.domain",
],
];
$b = [
[
"id"=> 136589,
"metaname" => "ip",
"metavalue" => "1.2.3.4",
],
[
"id"=> 136590,
"metaname" => "domain",
"metavalue" => "example.com",
],
];
Run Code Online (Sandbox Code Playgroud)
我需要循环$a查找不存在的key('ip')值('1.2.3.4')组合$b.在数组中$a,我需要捕获ip '4.3.2.1'和域'another.domain'
$b有不同键的匹配值是可能的吗?
一个很好的例子就是'ip'地址.可能与IP相关的元名值是'ip','ip.dst'和'ip.src'.返回示例数据 - 即使'ip'匹配,如果metaname不匹配,也应该跳过它.
foreach ($a as $metaName => $metaValues)
{
foreach ($metaValues as …Run Code Online (Sandbox Code Playgroud)