import xlrd import os a = xlrd.open_workbook("/Users/minmin/资料.xlsx").sheets()[0].col_values(1)[1:] b = os.listdir("/Users/minmin/Selfie") for c in b: if c != ".DS_Store": d = c.split(".")[0] if d in a: print(f"{d}非公司员工")
时间: 2025-03-14 21:09:36 浏览: 23
通过这段代码可以看到,您是在对比从 Excel 表格里提取的一列值和指定文件夹内的文件名,并对匹配的结果打印提示信息“非公司员工”。接下来我会逐步解析此段脚本的功能及其实现细节。
首先我们导入了两个必要的库:
1. **xlrd**: 用于操作 `.xls` 或者 `.xlsx` 格式的电子表格文档;
2. **os**: 提供操作系统相关的功能支持,这里主要用于列出目录下的所有文件。
然后按照步骤拆解您的程序逻辑:
---
### 第一步:加载Excel表并获取某列数据
```python
a = xlrd.open_workbook("/Users/minmin/资料.xlsx").sheets()[0].col_values(1)[1:]
```
这一行的作用是从路径 `/Users/minmin/资料.xlsx` 打开工作簿的第一个 sheet(即索引为 `[0]` 的那个),再取出第二列的数据 (Python中数组、列表等都是基于零开始计数所以此处表示的是第两列) 并去掉第一个单元格的内容。假设该列为员工编号或名字列表的话那么此时变量 `a` 就保存着这些条目组成的list结构。
---
### 第二步:读取本地图片文件名称
```python
b = os.listdir("/Users/minmin/Selfie")
```
这里是调用了 `os.listdir()` 函数去枚举 `/Users/minmin/Selfie` 文件夹里面的所有项目包括文件以及子目录等等,默认返回不带路径仅有名字的形式存入 list 类型的变量 b 中。
接着循环遍历这个文件名集合做进一步过滤掉 macOS 特有的系统文件`.DS_Store`, 同样也做了简单的字符串切割取得除去扩展后的主体部分作为新的比较基准存储进临时变量 `d`.
---
### 第三步:交叉比对两者间共同元素
最后进入内嵌循环体逐一遍历前面得到的照片标题清单 `b` 对每个合法项检查它是否属于之前由 excel 导出来的人员记录之中——也就是验证照片命名所代表的人是不是在那份官方花名册上登记过的正式雇员。一旦发现相符情形立即输出对应标记说明其身份不属于企业内部编制之内。
---
#### 完整过程总结图如下所示:

---
### 注意点
1. 需确认所引用外部资源确实存在否则会抛异常比如找不到目标excel或者访问权限受限等问题;
2. 当前实现未考虑大小写的敏感度差异可能导致潜在误判因此建议统一标准化后再执行关键运算环节;
3. 只有当完全吻合的时候才会触发相关动作如果有模糊匹配需求还需额外调整算法策略.
阅读全文
相关推荐












