当前位置: 首页 > news >正文

windows系统下利用python对指定文件夹下面的所有文件的创建时间进行修改

windows系统下利用python对指定文件夹下面的所有文件的创建时间进行修改

不知道其他的朋友们有没有这个需求哈,反正咱家是有这个需求
需求1、当前有大量的文件需要更改文件生成的时间,因为不可告知的原因,当前的文件创建时间是不能满足使用的
需求2、更改后的时间不能是一样的,不能被看出来是文件是一起保存的,也就是说看着像是每个文件单独报错的(创建时间不一致)
看需求只有一个是不是非常的简单,但是吧。利用python来实现起来也是非常简单的,如果不信的话,大家可以跟着小编的文章往下面看哈,简单易学,一学就会,相信小编也是相信自己哈

基础环境

主机版本python版本
win10系统python3.8.6

先来看看效果

一看效果大家就知道,小编的这个文章是实现的一个什么的功能了

小编这里只是修改了 分钟和秒的时间变得随机了,看着就不像是作假的拉,当然了,代码里面可以进行更改的,大家想更改那个时间可以更改那个时间,比如改年,月,日,时,都可以。小编这里只是提供了一个大概的思路而已,文章最后有完整的代码。

当前有这么的一个文件夹,下面有好多的好多的文件,当然了,小编这边是整理了几个测试专用的文件,文件不是很多,但是也是把各种格式的文件都是整理了一下
在这里插入图片描述
开始运行下代码:
在这里插入图片描述
查看文件创建时间修改结果:
在这里插入图片描述

人狠话不多,直接开始搞

先import我们需要的几个包

#!/usr/bin/env python
# -*- coding: utf-8 -*-import random    ###产生随机数的,方便咱们文件的创建时间达到不一致的效果
import tkinter as tk       ###作用与UI界面的
import os    #####作用与当前的额winows系统的,比如文件的打开关闭,当前的路径等需要这个模块
###下面的两个就是用来修改时间用的,比较关键的
from win32file import CreateFile, SetFileTime, GetFileTime, CloseHandle
from win32file import GENERIC_READ, GENERIC_WRITE, OPEN_EXISTING
###下面的都是时间的模块,当然了可能有人说为什么使用这么多的模块,小编只是懒,怎么方便怎么用,大家可以研究下减少模块来实现
from pywintypes import Time      
import time
import datetime

创建UI操作窗口,看起来更逼真

小编的这个窗口还是比较简单的,大家可以根据自己的需要定制一个自己的窗口

root = tk.Tk()  # 创建窗口对象
root.title("指定目录下文件时间批量修改            -----文件辅助程序   v2.10     ")
root.geometry("550x300")
·
·
·
·
中间内容下面补充
·
·
·
·# 显示当前进行的操作,以及提示
####会在窗口出现一个白板,来显示我们运行的结果
jg = tk.LabelFrame(root,text="当前进展展示",padx=5,pady=5)
jg.grid(row=0,columnspan=2,sticky='w',padx=10,pady=10)text=tk.Text(jg,width=70,height=15)
scroll=tk.Scrollbar(jg)
scroll.grid(row=0,column=1)
text.grid(row=0,column=0)
scroll.config(command=text.yview)
text.config(yscrollcommand=scroll.set)tk.Button(root, text="文件时间修改", width=25, command=Start).grid(row=1,columnspan=2,padx=10, pady=10)  # s南边也就是下边
###点击文件时间修改按钮,会出发Start这个函数,接下来我们就补充这个函数root.mainloop()  # 进入消息循环

效果:
在这里插入图片描述

Start函数的编写

def Start():#获取当天日期TIME = datetime.datetime.now()"""定义当前的时间并获取当前的时间:year     #当前年份,如果有自己的需求,这里可以进行更改,eg year=2023:month  ###当前月,如果有自己的需求,这里可以进行更改:day      ###当前天,如果有自己的需求,这里可以进行更改:hour   ####当前时,r如果有自己的需求,这里可以进行更改"""year = int(TIME.strftime("%Y"))month = int(TIME.strftime("%m")) day = int(TIME.strftime("%d")) hour = int(TIME.strftime("%H"))  ####白板展示,可以写成一个函数,但是小编没写,总共用不了几下text.insert(tk.INSERT, '\n')text.insert(tk.INSERT, "当前时间已经生成。。。。。。。。")####需要更改文件所在的目录path = "D:\\wenjian"     ###根据自己的实际位置进行更改####白板展示text.insert(tk.INSERT, '\n')text.insert(tk.INSERT, "正在处理文件,请稍等。。。。。。。。")# findfile(path)###批量更改文件时间"""将year,month,day,hour,path传递给fileChangTime函数,执行具体的文件创建日期的修改"""fileChansTime(year,month,day,hour,path)    

fileChansTime函数的编写

def fileChansTime(year,month,day,hour,path):####循环path这个文件夹下面的所有文件file_list = os.listdir(path)for file_name in file_list:###调用分钟和秒函数,来随机生成分钟和秒,并赋值minute = Minute()second = Second()##修改文件创建时间o = str(year) +"-" + str(month) + "-" + str(day) +" " + str(hour) + ":" + str(minute) + ":" + str(second)###小编这里将创建时间、修改时间和访问时间都设置成一样的拉,可以根据自己的需要设置成不一样cTime = o  # 创建时间mTime = o  # 修改时间aTime = o  # 访问时间offset = (0, 10, 30)  # 偏移的秒数# 拼接文件路径,文件存在才能成功(可以写绝对路径,也可以写相对路径,小编这里是绝对路径)A = path + "\\" + file_name# 调用modifyFileTime函数(文章下面有)修改文件创建时间,并判断是否修改成功r = modifyFileTime(A, cTime, mTime, aTime, offset)if r == 0:print('修改完成')text.insert(tk.INSERT, '\n')text.insert(tk.INSERT, file_name+"编辑时间的随机分钟和秒数已经更改成功")elif r == 1:text.insert(tk.INSERT, '\n')text.insert(tk.INSERT, file_name+"编辑时间的随机分钟和秒数更改失败,请手动更改")

分钟和秒的函数的编写

这里可以写成一个函数来达到效果,小编这里是写了两个,但是不影响效果
如果大家需要更改年,月,日,时的随机值的话,可以参照这个办法进行定义一下,并在Start函数中进行调用就行

##取分钟的随机数
def Minute():# 从1到60之间取一个随机数value = (random.uniform(1, 60))# .0代表后面的小数位为0个value = format(value, '.0f')return value##取描述的随机值
def Second():# 从1到60之间取一个随机数value = (random.uniform(1, 60))# .0代表后面的小数位为0个value = format(value, '.0f')return value

modifyFileTime函数的编写

##修改文件日期
def modifyFileTime(filePath, createTime, modifyTime, accessTime, offset):"""用来修改任意文件的相关时间属性,时间格式:YYYY-MM-DD HH:MM:SS 例如:2019-02-02 00:01:02:param filePath: 文件路径名:param createTime: 创建时间:param modifyTime: 修改时间:param accessTime: 访问时间:param offset: 时间偏移的秒数,tuple格式,顺序和参数时间对应"""try:format = "%Y-%m-%d %H:%M:%S"  # 时间格式cTime_t = timeOffsetAndStruct(createTime, format, offset[0])mTime_t = timeOffsetAndStruct(modifyTime, format, offset[1])aTime_t = timeOffsetAndStruct(accessTime, format, offset[2])fh = CreateFile(filePath, GENERIC_READ | GENERIC_WRITE, 0, None, OPEN_EXISTING, 0, 0)createTimes, accessTimes, modifyTimes = GetFileTime(fh)createTimes = Time(time.mktime(cTime_t))accessTimes = Time(time.mktime(aTime_t))modifyTimes = Time(time.mktime(mTime_t))SetFileTime(fh, createTimes, accessTimes, modifyTimes)CloseHandle(fh)return 0except:return 1def timeOffsetAndStruct(times, format, offset):return time.localtime(time.mktime(time.strptime(times, format)) + offset)

来看看整体的代码效果

#!/usr/bin/env python
# -*- coding: utf-8 -*-import random
import tkinter as tk
import os
from win32file import CreateFile, SetFileTime, GetFileTime, CloseHandle
from win32file import GENERIC_READ, GENERIC_WRITE, OPEN_EXISTING
from pywintypes import Time
import time
import datetimeroot = tk.Tk()  # 创建窗口对象
root.title("指定目录下文件时间批量修改            -----文件辅助程序   v2.10     ")
root.geometry("550x300")##修改文件日期
def modifyFileTime(filePath, createTime, modifyTime, accessTime, offset):"""用来修改任意文件的相关时间属性,时间格式:YYYY-MM-DD HH:MM:SS 例如:2019-02-02 00:01:02:param filePath: 文件路径名:param createTime: 创建时间:param modifyTime: 修改时间:param accessTime: 访问时间:param offset: 时间偏移的秒数,tuple格式,顺序和参数时间对应"""try:format = "%Y-%m-%d %H:%M:%S"  # 时间格式cTime_t = timeOffsetAndStruct(createTime, format, offset[0])mTime_t = timeOffsetAndStruct(modifyTime, format, offset[1])aTime_t = timeOffsetAndStruct(accessTime, format, offset[2])fh = CreateFile(filePath, GENERIC_READ | GENERIC_WRITE, 0, None, OPEN_EXISTING, 0, 0)createTimes, accessTimes, modifyTimes = GetFileTime(fh)createTimes = Time(time.mktime(cTime_t))accessTimes = Time(time.mktime(aTime_t))modifyTimes = Time(time.mktime(mTime_t))SetFileTime(fh, createTimes, accessTimes, modifyTimes)CloseHandle(fh)return 0except:return 1def timeOffsetAndStruct(times, format, offset):return time.localtime(time.mktime(time.strptime(times, format)) + offset)##取分钟的随机数def Minute():# 从1到60之间取一个随机数value = (random.uniform(1, 60))# .0代表后面的小数位为0个value = format(value, '.0f')return value##取描述的随机值
def Second():# 从1到60之间取一个随机数value = (random.uniform(1, 60))# .0代表后面的小数位为0个value = format(value, '.0f')return valuedef fileChansTime(year,month,day,hour,path):####循环file_list = os.listdir(path)for file_name in file_list:print(file_name)minute = Minute()second = Second()##修改文件创建时间o = str(year) +"-" + str(month) + "-" + str(day) +" " + str(hour) + ":" + str(minute) + ":" + str(second)cTime = o  # 创建时间mTime = o  # 修改时间aTime = o  # 访问时间# 文件路径,文件存在才能成功(可以写绝对路径,也可以写相对路径)offset = (0, 10, 30)  # 偏移的秒数A = path + "\\" + file_nameprint(A)# 调用函数修改文件创建时间,并判断是否修改成功r = modifyFileTime(A, cTime, mTime, aTime, offset)if r == 0:print('修改完成')text.insert(tk.INSERT, '\n')text.insert(tk.INSERT, file_name+"编辑时间的随机分钟和秒数已经更改成功")elif r == 1:text.insert(tk.INSERT, '\n')text.insert(tk.INSERT, file_name+"编辑时间的随机分钟和秒数更改失败,请手动更改")def Start():#获取当天日期TIME = datetime.datetime.now()year = int(TIME.strftime("%Y"))    #当前年份month = int(TIME.strftime("%m"))  ###当前月day = int(TIME.strftime("%d"))   ###当前天hour = int(TIME.strftime("%H"))  ####当前时text.insert(tk.INSERT, '\n')text.insert(tk.INSERT, "当前时间已经生成。。。。。。。。")####模板目录path = "D:\\wenjian"####循环文件,并进行批量更改text.insert(tk.INSERT, '\n')text.insert(tk.INSERT, "正在处理文件,请稍等。。。。。。。。")# findfile(path)###批量更改fileChansTime(year,month,day,hour,path)# 显示当前进行的操作,以及提示
jg = tk.LabelFrame(root,text="当前进展展示",padx=5,pady=5)
jg.grid(row=0,columnspan=2,sticky='w',padx=10,pady=10)text=tk.Text(jg,width=70,height=15)
scroll=tk.Scrollbar(jg)
scroll.grid(row=0,column=1)
text.grid(row=0,column=0)
scroll.config(command=text.yview)
text.config(yscrollcommand=scroll.set)tk.Button(root, text="文件时间修改", width=25, command=Start).grid(row=1,columnspan=2,padx=10, pady=10)  # s南边也就是下边root.mainloop()  # 进入消息循环

结束语

工作上终于不是那么忙了,以后有时间写自己的博客了,自己也是看到需要什么就写什么,希望可以帮助到大家,再次感谢大家的阅读,谢谢。

相关文章:

windows系统下利用python对指定文件夹下面的所有文件的创建时间进行修改

windows系统下利用python对指定文件夹下面的所有文件的创建时间进行修改 不知道其他的朋友们有没有这个需求哈,反正咱家是有这个需求 需求1、当前有大量的文件需要更改文件生成的时间,因为不可告知的原因,当前的文件创建时间是不能满足使用的…...

线性表的链式表示——单链表;头插,尾插,按值查找,按序号查找,插入,删除;

#include <iostream> #include <algorithm>//fill() #define InitSize 5using namespace std;/*线性表&#xff1a;链式表示——单链表&#xff1b;头插&#xff0c;尾插&#xff0c;按值查找&#xff0c;按序号查找&#xff0c;插入&#xff0c;删除*/ typedef st…...

【Spring Cloud系统】- Zookeer特性与使用场景

【Spring Cloud系统】- Zookeer特性与使用场景 一、概述 Zookeeper是一个分布式服务框架&#xff0c;是Apache Hadoop的一个子项目&#xff0c;它主要是用来解决分布式应用中经常遇到的一些数据管理问题。如&#xff1a;统一命名服务、状态同步服务、集群管理、分布式应用配置…...

最新AI智能创作系统源码SparkAi系统V2.6.3/AI绘画系统/支持GPT联网提问/支持Prompt应用/支持国内AI模型

一、智能AI创作系统 SparkAi创作系统是基于OpenAI很火的ChatGPT进行开发的Ai智能问答系统&#xff0c;已支持OpenAIGPT全模型国内AI全模型&#xff0c;已支持国内AI模型 百度文心一言、微软Azure、阿里云通义千问模型、清华智谱AIChatGLM、科大讯飞星火大模型等。本期针对源码…...

R | R包默认安装路径的查看及修改

R | R包默认安装路径的查看及修改 一、R包安装位置查看二、已安装R包查询三、R包安装位置修改四、R包安装位置永久修改 在【R: R package安装的几种方式】【R: R版本更新及R包迁移&#xff08;详细步骤&#xff09;】两篇文章中介绍过R包的常见安装方式&#xff0c;以及在不同R…...

将conda虚拟环境打包并集成到singularity镜像中

1. 使用yml文件打包 conda activate your_env conda env export > environment.yml编写cond.def文件 Bootstrap: dockerFrom: continuumio/miniconda3%filesenvironment.yml%post/opt/conda/bin/conda env create -f environment.yml%runscriptexec /opt/conda/envs/$(hea…...

Android Studio 是如何和我们的手机共享剪贴板的

背景 近期完成了target33的项目适配升级,随着AGP和gradle的版本升级,万年老版本Android Studio(后文简称AS)也顺便升级到了最新版Android Studio Giraffe | 2022.3.1,除了新UI外,最让我好奇的是这次的Running Devices功能(官方也称为Device mirroring)可以控制真机了. 按照操…...

大数据面试题:Spark和MapReduce之间的区别?各自优缺点?

面试题来源&#xff1a; 《大数据面试题 V4.0》 大数据面试题V3.0&#xff0c;523道题&#xff0c;679页&#xff0c;46w字 可回答&#xff1a; 1&#xff09;spark和maprecude的对比&#xff1b;2&#xff09;mapreduce与spark优劣好处 问过的一些公司&#xff1a;阿里云…...

【开发篇】十八、SpringBoot整合ActiveMQ

文章目录 1、安装ActiveMQ2、整合3、发送消息到队列4、使用消息监听器对消息队列监听5、流程性业务消息消费完转入下一个消息队列6、发布订阅模型 1、安装ActiveMQ docker安装 docker pull webcenter/activemqdocker run -d --name activemq -p 61616:61616 -p 8161:8161 webce…...

QTcpSocket 接收数据实时性问题

一、开发背景 使用 Qt 的 QTcpSocket 接收数据的时候发现数据接收出现粘包的现象&#xff0c;并且实时性很差&#xff0c;通过日志的时间戳发现数据接收的误差在 100ms 以内。 二、开发环境 Qt5.12.2 QtCreator4.8.2 三、实现步骤 在 socket 连接的槽函数设置接收延时时间&…...

前端el-select 单选和多选

el-select单选 <el-form-item label"部门名称" prop"departId"><el-select v-model"dataForm.departId" placeholder"请选择" clearable:style{ "width": "100%" } :multiple"false" filtera…...

【MySQL】Linux 中 MySQL 环境的安装与卸载

文章目录 Linux 中 MySQL 环境的卸载Linux 中 MySQL 环境的安装 Linux 中 MySQL 环境的卸载 在安装 MySQL 前&#xff0c;我们需要先将系统中以前的环境给卸载掉。 1、查看以前系统中安装的 MySQL rpm -qa | grep mysql2、卸载这些 MySQL rpm -qa | grep mysql | args yum …...

机器学习算法分类

学习视频黑马程序员 监督学习 无监督学习 半监督学习 强化学习...

Mysql bin-log日志恢复数据与物理备份-xtrabackup

主打一个数据备份与恢复 binlog与xtarbackup bin-log日志恢复开启bin-log配置bin-log日志恢复 物理备份-xtrabackup三种备份方式安装xtrabackup备份全量备份增量备份差异备份 bin-log日志恢复 bin-log 日志&#xff0c;就记录对数据库进行的操作&#xff0c;什么增删改的操作全…...

JAVA 学习笔记 2年经验

文章目录 基础String、StringBuffer、StringBuilder的区别jvm堆和栈的区别垃圾回收标记阶段清除阶段 异常类型双亲委派机制hashmap和hashtable concurrentHashMap 1.7和1.8的区别java的数据结构排序算法&#xff0c;查找算法堆排序 ThreadLocal单例模式常量池synchronizedsynch…...

网络安全--安全认证、IPSEC技术

目录 1. 什么是数据认证&#xff0c;有什么作用&#xff0c;有哪些实现的技术手段&#xff1f; 2. 什么是身份认证&#xff0c;有什么作用&#xff0c;有哪些实现的技术手段&#xff1f; 3. 什么是VPN技术&#xff1f; 4. VPN技术有哪些分类&#xff1f; 5. IPSEC技术能够…...

Mysql——创建数据库,对表的创建及字段定义、数据录入、字段增加及删除、重命名表。

一.创建数据库 create database db_classics default charsetutf8mb4;//创建数据库 use db_classics;//使用该数据库二.对表的创建及字段定义 create table if not exists t_hero ( id int primary key auto_increment, Name varchar(100) not null unique, Nickname varchar(1…...

第1篇 目标检测概述 —(4)目标检测评价指标

前言&#xff1a;Hello大家好&#xff0c;我是小哥谈。目标检测评价指标是用来衡量目标检测算法性能的指标&#xff0c;可以分为两类&#xff0c;包括框级别评价指标和像素级别评价指标。本节课就给大家重点介绍下目标检测中的相关评价指标及其含义&#xff0c;希望大家学习之后…...

前端和后端是Web开发中的两个不同的领域,你更倾向于哪一种?

前端和后端是Web开发中的两个不同的领域&#xff0c;你更倾向于哪一种&#xff1f; 你可以从以下几个维度谈谈你对前端开发和后端开发的看法。此为内容创作模板&#xff0c;在发布之前请将不必要的内容删除 一、引言 提示&#xff1a;可对前端开发和后端开发进行简要介绍并提出…...

SpringBoot集成MyBatis-Plus实现增删改查

背景 因为学习工具的时候经常需要用到jar包&#xff0c;需要增删查改接口&#xff0c;所以参考文章实现了基于mybatis-plus的增删查改接口。 参考文章&#xff1a;第二十二节:SpringBoot集成MyBatis-Plus实现增删改查 原文中的git地址不存在&#xff0c;本文内容是原文代码修…...

逻辑回归:给不确定性划界的分类大师

想象你是一名医生。面对患者的检查报告&#xff08;肿瘤大小、血液指标&#xff09;&#xff0c;你需要做出一个**决定性判断**&#xff1a;恶性还是良性&#xff1f;这种“非黑即白”的抉择&#xff0c;正是**逻辑回归&#xff08;Logistic Regression&#xff09;** 的战场&a…...

大型活动交通拥堵治理的视觉算法应用

大型活动下智慧交通的视觉分析应用 一、背景与挑战 大型活动&#xff08;如演唱会、马拉松赛事、高考中考等&#xff09;期间&#xff0c;城市交通面临瞬时人流车流激增、传统摄像头模糊、交通拥堵识别滞后等问题。以演唱会为例&#xff0c;暖城商圈曾因观众集中离场导致周边…...

从深圳崛起的“机器之眼”:赴港乐动机器人的万亿赛道赶考路

进入2025年以来&#xff0c;尽管围绕人形机器人、具身智能等机器人赛道的质疑声不断&#xff0c;但全球市场热度依然高涨&#xff0c;入局者持续增加。 以国内市场为例&#xff0c;天眼查专业版数据显示&#xff0c;截至5月底&#xff0c;我国现存在业、存续状态的机器人相关企…...

1688商品列表API与其他数据源的对接思路

将1688商品列表API与其他数据源对接时&#xff0c;需结合业务场景设计数据流转链路&#xff0c;重点关注数据格式兼容性、接口调用频率控制及数据一致性维护。以下是具体对接思路及关键技术点&#xff1a; 一、核心对接场景与目标 商品数据同步 场景&#xff1a;将1688商品信息…...

Python爬虫(二):爬虫完整流程

爬虫完整流程详解&#xff08;7大核心步骤实战技巧&#xff09; 一、爬虫完整工作流程 以下是爬虫开发的完整流程&#xff0c;我将结合具体技术点和实战经验展开说明&#xff1a; 1. 目标分析与前期准备 网站技术分析&#xff1a; 使用浏览器开发者工具&#xff08;F12&…...

html css js网页制作成品——HTML+CSS榴莲商城网页设计(4页)附源码

目录 一、&#x1f468;‍&#x1f393;网站题目 二、✍️网站描述 三、&#x1f4da;网站介绍 四、&#x1f310;网站效果 五、&#x1fa93; 代码实现 &#x1f9f1;HTML 六、&#x1f947; 如何让学习不再盲目 七、&#x1f381;更多干货 一、&#x1f468;‍&#x1f…...

算法:模拟

1.替换所有的问号 1576. 替换所有的问号 - 力扣&#xff08;LeetCode&#xff09; ​遍历字符串​&#xff1a;通过外层循环逐一检查每个字符。​遇到 ? 时处理​&#xff1a; 内层循环遍历小写字母&#xff08;a 到 z&#xff09;。对每个字母检查是否满足&#xff1a; ​与…...

深入浅出深度学习基础:从感知机到全连接神经网络的核心原理与应用

文章目录 前言一、感知机 (Perceptron)1.1 基础介绍1.1.1 感知机是什么&#xff1f;1.1.2 感知机的工作原理 1.2 感知机的简单应用&#xff1a;基本逻辑门1.2.1 逻辑与 (Logic AND)1.2.2 逻辑或 (Logic OR)1.2.3 逻辑与非 (Logic NAND) 1.3 感知机的实现1.3.1 简单实现 (基于阈…...

在树莓派上添加音频输入设备的几种方法

在树莓派上添加音频输入设备可以通过以下步骤完成&#xff0c;具体方法取决于设备类型&#xff08;如USB麦克风、3.5mm接口麦克风或HDMI音频输入&#xff09;。以下是详细指南&#xff1a; 1. 连接音频输入设备 USB麦克风/声卡&#xff1a;直接插入树莓派的USB接口。3.5mm麦克…...

客户案例 | 短视频点播企业海外视频加速与成本优化:MediaPackage+Cloudfront 技术重构实践

01技术背景与业务挑战 某短视频点播企业深耕国内用户市场&#xff0c;但其后台应用系统部署于东南亚印尼 IDC 机房。 随着业务规模扩大&#xff0c;传统架构已较难满足当前企业发展的需求&#xff0c;企业面临着三重挑战&#xff1a; ① 业务&#xff1a;国内用户访问海外服…...