模拟windows全盘搜索

Posted backlight

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了模拟windows全盘搜索相关的知识,希望对你有一定的参考价值。

循环遍历pc上的文件夹,保存到mysql数据库中,搜索时,从数据库取数据。
import os
import datetime
import pymysql
import threading


def link_db():
conn = pymysql.connect(host=‘localhost‘, port=3306, user=‘root‘, password=‘123456‘, db=‘win‘, charset=‘utf8mb4‘)
cursor = conn.cursor()
return cursor


def save_file(path, conn, cursor):

try:
print(path)
dirList = os.listdir(path)
for i in dirList:
if i.startswith(‘.‘):
continue
newPath = os.path.join(path, i)
if os.path.isdir(newPath):
save_file(newPath, conn, cursor)
elif os.path.isfile(newPath):
# 名称
file_name = os.path.basename(newPath)
# 类型
file_type = os.path.splitext(newPath)[1]
# 完整路径
file_path = newPath
# 大小
file_size = os.path.getsize(newPath)
# 上次访问时间
last_time = datetime.datetime.fromtimestamp(os.path.getatime(newPath))
# 创建时间
create_time = datetime.datetime.fromtimestamp(os.path.getctime(newPath))
# 修改时间
update_time = datetime.datetime.fromtimestamp(os.path.getmtime(newPath))
sql = "insert into `files`(`file_name`, `file_type`, `file_path`, `file_size`, `last_time`, " \
"`create_time`, `update_time`) values(%s, %s, %s, %s, %s, %s, %s)"
cursor.execute(sql, (file_name, file_type, file_path, file_size, last_time, create_time, update_time))
conn.commit()
print(file_name , ‘文件名‘)
except FileNotFoundError as e:
pass
except PermissionError as e:
pass

def search_file(name, conn, cursor):
sql = ‘select file_name, file_path from files where file_name like "%{}%" ; ‘.format(name)
cursor.execute(sql)
data = cursor.fetchall()
for file in data:
print(file)



if __name__ == ‘__main__‘:
conn = pymysql.connect(host=‘localhost‘, port=3306, user=‘root‘, password=‘123456‘, db=‘win‘, charset=‘utf8mb4‘)
cursor = conn.cursor()
# sql = ‘delete from files;‘
# cursor.execute(sql)
# conn.commit()
# path = ‘D:\\‘
# thread = threading.Thread(target=save_file, args=(path, conn, cursor), name=‘No.1‘)
# thread.start()
# thread.join()
file_name = input(‘输入搜索的文件名:‘)
thread1 = threading.Thread(target=search_file, args=(file_name, conn, cursor), name=‘search.one‘)
thread1.start()
# search_file(file_name, conn, cursor)

以上是关于模拟windows全盘搜索的主要内容,如果未能解决你的问题,请参考以下文章

Listary Pro- 文件浏览与搜索增强的超级神器

如何在Windows环境下模拟丢包

ssd不是全盘模拟的

系统即将关机,还剩60秒 WINDOWS\system32\services.exe意外终止,状态码为-1073741819

MFC模拟 Windows 文件可视化系统

全盘搜索案例