2025-11
12

分析数据本地引用

By xrspook @ 8:25:41 归类于: 烂日记

用了一个晚上的时间,把之前直接用Deepseek或者手动转化出来的Excel数据改为引用Excel文件。这个操作并不难,但因为东西比较多,所以比较烦。首先我需要在一个Excel文件里面建好几个工作表,把每一组数据贴在不同的工作表,这样的好处是读取的时候就不怕会搞混了。在做那些工作表的同时我搞了个目录,把工作表到底是什么内容都安顿好。因为没有最终版本,所以我还没有设置超连接。做目录和超连接都挺简单。接下来的事情就是在每一个直接引用数据的py文件里修改引用方式。

因为DS的神经,所以那些格式化过的数据有些是列表,有些是元组。之所以要用元组,因为这样就一定不会出现字段长度不一致。可以这么说,被DS处理过的数据如果用列表去表达,几乎每一次可视化分析的时候都会被告知字段长度不一致。因为这个,所以后来我在提要求告诉它要作什么图的时候,我直接它先把数据以元组方式格式化,用元组的方式格式化了以后保证字段长度一定是一样的,但关键是会不会少了几个不知道。幸亏几年前我是认真学过Python的,基础的字符串列表元组字典我还是有点懂。我感觉哪怕我不是自己手动把Excel里面的某列数据转化为列表,而是把它贴掉某个地方在线转化,也不至于在转化之后东西丢失。DS是怎么做到把我的数据弄丢了呢?

之前用Python操作Excel的时候,打开Excel文件用的是xlwings,之所以用那个是因为那本叫《超简单 用Python让Excel飞起来》的书主要用的就是那个。那个跟其它库相比我觉得差异主要在于支持打开的Excel文件的后缀比较多。这样我就不需要针对这个文件用这种打开方式那个文件用另外一款,但如果我用了xlwings,但是我的程序不通过,做到一半就卡住了,那么Excel文件就会处于一个打开的状态。我只能去任务管理器那里手动把已经打开的文件关闭,否则我没办法继续下去。之前我好像没有试过光是读取Excel文件里面的数据,不把加工后的东西写回到Excel里。如果要进行Excel文件的写入,我感觉有必要把Excel文件打开,但打开了以后程序卡住无法进行下去,难以避免得有一个关闭的过程,估计可以写一段代码,把Excel通通关闭掉。只是我当初没有干这个,只是很老实地手动操作。

如果我只是读取Excel文件的某些内容,不往那个文件里面写入数据,是不是意味着或许我可以用一种类似ADO的方式读取文件数据,不需要进行实际的打开和关闭呢?

这一次我需要用pandas读取Excel里面的数据,但我不需要把加工后的数据写入到Excel,因为只有两个结果,一个是生成png图,另外一个是一些相关分析的结论。相关分析的结论我可以直接在终端里拷贝,又或者我可以直接生成txt文件。这次我用pandas直接读取,发现的确可以,而且貌似也没有那种程序虽然被卡住,但是Excel没有被正常关闭的问题。据说用panda读取Excel数据,实际上panda是引用了其它库,所以如果要在pandas里实现这个功能,要安装其它库才行。我在一开始的时候只引用了panda,就可以做到读取Excel文件,不需要把pandas引用的那些库也都引用一遍,但可以肯定的是其它库估计我都已经安装过了。

一开始尝试阶段会比较慢,后来熟了之后速度加快了,但因为我是一个完美主义者,所以对一些细节的把控还是翻来覆去,纠结了好些时间,比如网格线到底要用半透明的还是直接不透明。

但总算用一个晚上的时间,我就实现了我想做的全部。

2025-05
30

自动生成Excel索引

By xrspook @ 8:22:23 归类于: 烂日记

我要对一堆的本地eml文件做一个索引,应该用什么方式表达呢?一开始我想到的是做一个html的网页。上面需要表达的信息包括:分类、时间、附件个数、发件人、邮件主题以及文件路径。文件路径应该是一个超链接,我点击这个网页的超链接,就能到达那个文件,可能是直接打开文件。有没有一种方式是打开资源管理器直接锚定到那个文件但不打开呢?一开始我是这么设想的,但后来网友告知,在浏览器层面没办法打开这些文件,因为安全性的原因,浏览器没有打开文件的权限。如果那是一个txt文件,那么你可以直接在浏览器里打开,如果是一个图片,也能打开,但是如果那是一些其它后缀的文件,理论上是打不开的,哪怕你在浏览器里以资源管理器索引的方式打开了文件夹的目录,当你点击某个后缀文件的时候,会弹出一个窗口让你下载。一整个下午我就在这里兜圈子,总感觉是不是有一种方式能够让浏览器弹出资源管理器锚定到那个文件,哪怕不打开文件本身。我一开始天真地觉得,在浏览器里面点超链接就能直接打开eml文件,因为那个后缀的文件我已经设定了默认打开方式是雷鸟。事实证明,我只是一个下午都在白费力气而已。

普通a开头的超链接是无法打开eml文件的,我想到了Excel里面的超链接。Excel的超链接可以直接链接到某个文件。它跟浏览器不一样。不会在Excel里面打开那些东西,哪怕那些个txt或者一个图片,会直接打开文件。所以我就尝试在Excel里给eml文件做一个超链接,结果发现。当我点击那个超链接的时候,会弹出一个窗口,告诉我这么干不安全,但是我依然可以选择是继续打开那个文件,之后雷鸟就会启动,那个eml文件就被打开了。所以简单来说,实际上在Excel里面是直接可以打开eml文件的,不过打开的时候会有一个令人烦恼的弹窗,可能在某些地方进行设置,可以把那个安全提醒的弹窗去掉,但我觉得没有必要。如果你不想被那个弹窗烦恼,你可以右键那个单元格的链接地址,直接贴到任何一个资源管理器地址栏,回车就打开了。操作是有点烦,但起码不会像浏览器那样,打不开或者非让你下载不可。

折腾了一个下午之后,我发现原来我的目标居然是把那个邮件索引做在Excel文件里。Excel的版本可以做的,和之前的功能没有区别,更强大的地方在于如果是在Excel文件里,排序很方便,搜索也很方便。

接下来我没有做更多浪费时间的事情,直接去把这个问题丢给Deepseek,问它如何用Python的方式把批量的 eml文件信息输出到Excel。第1次给我的那个版本只能针对某个路径,但如果那个路径里面还有子文件夹会被忽略,所以后来我增加提问,所以Deepseek又给了我递归那个路径下所有文件夹的版本。默认的回答没有附件个数,所以最后我要加多了要计算每个邮件附件个数的功能。

事实证明Deepseek真的是一个好东西,因为它第1个版本的代码已经能输出大概差不多那种东西,但是不能完全符合我的要求,因为它认为重要的信息和我需要的信息以及排序始终有区别。把pandas里面的数据输出到Excel有好几种方式,但是有些输出方式出来的那个Excel文件我个人感觉很丑,所以我又花了半个下午的时间改成了以xlwings输出,这个东西比其它输出在格式调整方面有更大的调控空间,比如自适配行高和列宽。在其它引擎里可能需要一大段的代码,但是在xlwings里面就只需要一句autofit。之所以知道这个,是因为之前在学Python提高Excel工作效率的书里我已经接触过这个东西。

Deepseek的代码能解决核心问题,但细节调整还是得靠自己。从第1次叫Deepseek写代码到我最终得到我想要的那个Excel索引,花了不到24小时。

© 2004 - 2026 我的天 | Theme by xrspook | Power by WordPress