zoukankan      html  css  js  c++  java
  • 模拟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)
  • 相关阅读:
    SpringBoot集成JWT
    MongoDB学习入门
    Docker入门笔记
    商品分类(递归子目录)接口开发笔记
    深入理解java虚拟机
    -XX:+HeapDumpOnOutOfMemoryError
    使用kettle报Invalid byte 1 of 1-byte UTF-8 sequence异常
    kettle学习笔记(四)——kettle输入步骤
    eclipse maven项目,如何导出使用的依赖jar包
    kettle学习笔记(二)——kettle基本使用
  • 原文地址:https://www.cnblogs.com/changqing8023/p/9068446.html
Copyright © 2011-2022 走看看