👉 项目官网:https://www.python-office.com/ 👈

github star

大家好,这里是程序员晚枫,正在all in AI编程实战

文件太多找不到?Windows 自带的搜索太慢?

今天教你怎么用 python-office 快速搜索文件

1、按文件名搜索

在指定文件夹里搜索文件:

1
2
3
4
5
6
7
8
9
10
import office

# 搜索文件
results = office.file.search(
folder='C:\\Users\\你的用户名\\Desktop',
keyword='报告'
)

for path in results:
print(path)

2、按文件类型搜索

1
2
3
4
5
6
7
8
import office

# 只搜索Excel文件
results = office.file.search(
folder='.',
keyword='.xlsx',
file_type='xlsx' # 只搜索xlsx文件
)

支持的文件类型:xlsx, docx, pdf, jpg, png 等。

3、搜索并显示文件信息

1
2
3
4
5
6
7
8
9
10
11
12
13
14
import office

# 搜索并获取详细信息
results = office.file.search(
folder='.',
keyword='合同',
with_info=True # 显示文件信息
)

for info in results:
print(f'文件: {info["path"]}')
print(f'大小: {info["size"]} KB')
print(f'修改时间: {info["mtime"]}')
print('---')

4、全盘搜索(慎用!)

搜索整个硬盘(会比较慢):

1
2
3
4
5
6
7
8
9
10
11
import office

# 全盘搜索
results = office.file.search_all(
disk='D:\\',
keyword='重要'
)

print(f'找到 {len(results)} 个结果')
for path in results[:20]: # 只显示前20个
print(path)

5、实战案例:找出去年所有的PDF报表

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
import office
import os
from datetime import datetime

def find_old_reports(folder, year=2023):
"""找出指定年份的PDF报表"""
results = office.file.search(
folder=folder,
keyword='.pdf',
file_type='pdf'
)

old_reports = []
for path in results:
# 检查文件修改时间
mtime = os.path.getmtime(path)
dt = datetime.fromtimestamp(mtime)

if dt.year == year and '报表' in path:
old_reports.append(path)

return old_reports

reports = find_old_reports('C:\\报表', year=2023)
print(f'找到 {len(reports)}{year}的报表:')
for r in reports:
print(r)

6、实战案例:按大小找大文件

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
import office
import os

def find_large_files(folder, min_mb=100):
"""找出大于指定大小的文件"""
large_files = []

for root, dirs, files in os.walk(folder):
for file in files:
path = os.path.join(root, file)
size_mb = os.path.getsize(path) / (1024 * 1024)

if size_mb >= min_mb:
large_files.append({
'path': path,
'size_mb': round(size_mb, 2)
})

# 按大小排序
large_files.sort(key=lambda x: x['size_mb'], reverse=True)

return large_files

files = find_large_files('C:\\', min_mb=1000) # 找大于1G的文件
for f in files[:10]:
print(f"{f['size_mb']} MB - {f['path']}")

7、常见问题

Q:搜索太慢?

A:可以限定搜索范围,不要搜整个硬盘。

Q:找不到文件?

A:检查关键词拼写,或者搜索更宽泛的词。

Q:结果太多?

A:加更多筛选条件,比如 file_typemin_size 等。

8、下讲预告

学会了文件搜索,下一讲我们学 自动化调度:定时执行任务。

敬请期待!


有问题欢迎加微信 python-office 进群交流~

程序员晚枫专注AI编程培训,小白看完他和图灵社区合作的教程《30讲 · AI编程训练营》就能上手做AI项目。

🎓 AI 编程实战课程

想系统学习 AI 编程?程序员晚枫的 AI 编程实战课 帮你从零上手!