循环遍历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)