吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1466|回复: 0
收起左侧

[Python 转载] python 扫描目录文件的一些信息

[复制链接]
僵尸不刷牙 发表于 2020-2-29 22:07
我也忘了当时为啥做这么个玩意,好像当时貌似是定时扫描文件的更新时间,如果一边的更新较新,就从新的那边复制过来吧,
就是一个py文件,直接运行就好.
[Python] 纯文本查看 复制代码
import os,time
import pandas as pd
from multiprocessing import Pool


def main_paths():
    global pathd    #定义全局变量 保存地址
    while True:
        pathd = input('请输入扫描文件夹:')
        if os.path.isdir(pathd)==True or pathd == 'exit()':
            break
        else:
            print('目录不存在,请重新输入,如果想终止请输入:exit()')
    pathd = pathd.replace('/','\\')
    listdirs = []                  
    files = []
    files_size = []
    files_updated = []
    files_created = []
    for i in os.listdir(pathd):
        if os.path.isdir(os.path.join(pathd,i)):    # 判断是文件还是文件夹
            if os.path.join(pathd,i) == os.path.join(pathd,'$Recycle.Bin'): #跳过回收站
                pass
            else:
                listdirs.append(os.path.join(pathd,i))
        else:
            filed = os.path.join(pathd,i)   #文件绝对路径
            files.append(filed)
            files_size.append(round(os.path.getsize(filed) / float(1024*1024),4))  #获取文件大小
            files_updated.append(time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(os.path.getmtime(filed))))  #更新时间
            files_created.append(time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(os.path.getctime(filed))))  #创建时间
    global main_dirs    #定义全局变量,获取主目录的文件
    main_dirs = {'绝对路径':files,'文件大小(m)':files_size,'更新时间':files_updated,'创建时间':files_created}
    main_dirs = pd.DataFrame(main_dirs)
    return listdirs

def path_list(paths):
    files = []
    files_size = []
    files_updated = []
    files_created = []

    # start = time.process_time()
    start = time.perf_counter()
    for q,w,e in os.walk(paths):
        for i in e:
            filed = os.path.join(q,i)   #文件绝对路径
            files.append(filed)   
            files_size.append(round(os.path.getsize(filed) / float(1024*1024),4))  #获取文件大小
            files_updated.append(time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(os.path.getmtime(filed))))  #更新时间
            files_created.append(time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(os.path.getctime(filed))))  #创建时间
    dirs = {'绝对路径':files,'文件大小(m)':files_size,'更新时间':files_updated,'创建时间':files_created}
    # end = time.process_time()
    end = time.perf_counter()
    print('{}完成,耗时:'.format(paths),end - start)
    return pd.DataFrame(dirs)
    

def save_paths(dirs):
    df = ''
    if len(dirs) == 0:      #判断是否有空的dataframe,会导致pd.concat拼接失败
        df = main_dirs 

    elif len(main_dirs) == 0:
        df = pd.concat(dirs)  

    else:
        df = pd.concat(dirs) #多个dataframe,这里可以用concat([df1,df2])拼接
        df = pd.concat([df,main_dirs])  #在拼接主目录下的文件,也就是全局变量main_dirs
    pathname = os.path.join(pathd,'目录扫描文件.xlsx')  # 获取全局变量的保存地址
    df.to_excel(pathname,index=False)
    print('文件保存成功,地址在:{}'.format(pathname))

if __name__ == "__main__":
    start = time.perf_counter()
    paths = main_paths()
    pool=Pool(processes=10)
    dirs = pool.map(path_list,paths)
    pool.close()
    pool.join()
    # print(len(main_dirs))  # 返回的是list
    save_paths(dirs)    
    end = time.perf_counter()
    print('总耗时:',end - start)
截图.gif

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-26 07:38

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表