# -*- coding: utf-8 -*-
# @Time : 2019-02-15 13:31
# @Author : cxa
# @File : sortbydate.py
# @Software: PyCharm
import glob
import pathlib
import os
import datetime
import traceback
from concurrent import futures
import time
from functools import partial '''
根据文件创建文件建立文件夹
''' def to_str_path(path):
if path:
new_path = os.fspath(path)
return new_path def movefile(image_path, dir_path):
try:
file_time = os.path.getctime(image_path)
stamp_to_datetime = datetime.datetime.fromtimestamp(file_time)
file_date = datetime.datetime.strftime(stamp_to_datetime, "%Y%m%d")
date_dir = (dir_path.joinpath(file_date))
jpg_dir_path, jpg_name = os.path.split(image_path) if not os.path.exists(date_dir):
os.makedirs(to_str_path(date_dir))
print(f"创建文件夹:{file_date},当前路径是{date_dir}")
new_file_path = to_str_path(os.path.join(date_dir, jpg_name))
print(f"开始移动文件{jpg_name},完整路径 {new_file_path}")
os.rename(image_path, new_file_path) # 移动文件或重命名,这里是移动文件
print(f"指定文件已经移动到当前目录的{date_dir}目录")
except:
print(traceback.format_exc()) def start(filename: str = None, filetype: str = "jpg"):
''' :param filename: 指定文件夹名,默认当前py文件所在的文件夹
:param date_str: 删除日期格式yyyymmdd
:param filetype: 需要删除的文件类型默认jpg.
:return: None
''' filename = filename or __file__
dir_path = pathlib.Path(filename).resolve().parent
image_path_list = glob.glob(to_str_path(dir_path.joinpath(f"*.{filetype}")))
movef = partial(movefile, dir_path=dir_path)
with futures.ThreadPoolExecutor(max_workers=10) as pool:
pool.map(movef, image_path_list) if __name__ == '__main__':
start_t = time.time()
start()
end = time.time()
print(end - start_t)

python按照文件创建日期整理文件至文件夹的更多相关文章

  1. Python定期删除文件、整理文件夹

    1.根据传入的参数,文件所在目录,匹配文件的正则表达式,过期天数进行删除,这些可写在配置文件del_file.conf. del_file3.py #!/usr/bin/env python # en ...

  2. 利用Python将文件进行分类整理

    利用Python将文件进行分类整理 功能 根据一个文件夹中的文件类型建立相应的文件夹,将同一种类型的文件放在一个文件夹中. 实现思路 主要用到 os 和 shutil 两个库,os 用来获取文件夹中的 ...

  3. python实现查看目录下重复的文件

    该python 脚本有以下三个功能: 1. 实现查看目录下重复的文件,输出文件按修改时间升序排列 2. 将按修改时间排列比较旧的.可删除的文件列出来 3. 按目录对重复文件进行统计,比如,目录/tmp ...

  4. [转载]Python 元组、列表、字典、文件

    python的元组.列表.字典数据类型是很python(there python is a adjective)的数据结构.这些结构都是经过足够优化后的,所以如果使用好的话,在某些area会有很大的益 ...

  5. python使用简单http协议来传送文件

    python使用简单http协议来传送文件!在ubuntu环境下,局域网内可以使用nc来传送文件,也可以使用基于Http协议的方式来下载文件我们可以使用python -m SimpleHTTPServ ...

  6. python引入导入自定义模块和外部文件

    参考:http://blog.csdn.net/devil_2009/article/details/15816237 项目中想使用以前的代码,或者什么样的需求致使你需要导入外部的包 如果是web 下 ...

  7. linux文件权限整理

    网上对linux文件权限的已经很多,不过还是要自己整理一下,不然每次都要查资料. linux下所有东西都是文件,包括设备,所以这里的文件也包括文件夹. 先是查看文件权限:ls -lh xzc@xzc- ...

  8. Python核心编程读笔 8: 文件和输入输出

    第九章 文件和输入输出 一.文件内建函数.方法.属性 1 文件内建函数 file_object = open(file_name, access_mode='r', buffering=-1) 工厂函 ...

  9. Python 函数基础、有序集合、文件操作(三)

    一.set 特点: set是一个无序且不重复的元素集合访问速度快:天生解决元素重复问题 方法: 初始化 >>> s1 = set()>>> print(type(s ...

随机推荐

  1. LSTM时间序列预测及网络层搭建

    一.LSTM预测未来一年某航空公司的客运流量 给你一个数据集,只有一列数据,这是一个关于时间序列的数据,从这个时间序列中预测未来一年某航空公司的客运流量.数据形式: 二.实战 1)数据下载 你可以go ...

  2. Ubuntu编译Protobuf(Base tensorflow-12)报错

    报错1: dogepool@ubuntu-server:~/dogecoin$ ./autogen.sh./autogen.sh: 50: ./autogen.sh: autoreconf: not ...

  3. 12.代理模式(Proxy Pattern)

    直接与间接:   人们对复杂的软件系统常有一种处理手法,即增加一层间接层,从而对系统获得一种更为灵活.满足特定需求的解决方案.                                      ...

  4. Debugger for chrome

    Debugger In VScode Getting Started Install the extension Debugger for chrome Config the launch.json ...

  5. cdqz2017-test1-数论 (BSGS + 二次剩余 + CRT)

    若m=0, 就是求n^2n ≡ x mod p (x--) 因为一定优解,所以x一定是p的二次剩余 令g为p的1个原根,且g^k ≡ x mod p 则k是偶数,证明k是偶数: 假设 g1^k1 ≡ ...

  6. PHP7 网络编程(六)Socket和IO多路复用【待】

    https://blog.csdn.net/zhang197093/article/details/77366407

  7. solr简介与安装

    solr简介: Solr 是Apache下的一个顶级开源项目,采用Java开发,它是基于Lucene的全文搜索服务器.Solr提供了比Lucene更为丰富的查询语言,同时实现了可配置.可扩展,并对索引 ...

  8. ssh 跳板机部署

    1.首先创建存放日志的文件夹并开放读写权限       mkdir /var/log/jump/       chmod -R 777 /var/log/jump/   2.将原有ssh程序修改为另外 ...

  9. Silverlight网页打开后马上崩溃,“白屏”,而且毫无提示

    如题,出现白屏的问题 在Application_UnhandledException函数内,跟踪异常e的提示信息,可以了解到如下信息: at System.ComponentModel.AsyncCo ...

  10. IIS Express URL Rewrite无效

    点击一下项目,再选择属性选项卡(不是右键属性) 如上图,如果托管管道模式是集成的话,改为经典即可.如果在vs2010的 WebDev.WebServer40方式启动 默认就是经典模式