python两种方法读取、修改文件的创建时间、修改时间、访问时间
看到网上有人出于特种目前,需要修改文件的创建时间和修改时间(访问时间是只要在操作系统里打开文件,系统就会自动更改最后的访问时间,因此此时间无意义,于是在网上查阅结合自己的经验,归纳 一下可行方案,在 python 中修改文件的属性(创建、修改、访问时间)里有两种方法:
相关概念:
- 创建时间:指文件第一次创建的时间;
- 修改时间:指文件上一次修改的时间;
- 访问时间:指文件上一次访问的时间。
方法一、用os.utime 可以读取文件的创建、修改、访问时间,但是只能更改文件的修改时间和访问时间,而不能更改文件的创建时间。
1、读取文件时间属性:
import os
from datetime import datetimectime = os.path.getctime("test") #创建时间
ctime_string = datetime.fromtimestamp(int(ctime))mtime = os.path.getmtime("test") #修改时间
mtime_string = datetime.fromtimestamp(int(ctime))atime = os.path.getatime("test") #修改时间
atime_string = datetime.fromtimestamp(int(ctime))print(f"创建时间:{ctime_string}", f"修改时间:{mtime_string}", f"访问时间:{atime_string}", sep="\n"
)'''输出
创建时间:2022-09-18 23:24:06
修改时间:2022-09-18 23:24:06
访问时间:2022-09-18 23:24:06
'''
当然也可以用os.stat来读取
#!/usr/bin/python
# -*- coding: UTF-8 -*-import os, sys# 显示文件的 stat 信息
stinfo = os.stat('a2.py')
print stinfo# 使用 os.stat 来接收文件的访问和修改时间
print "a2.py 的访问时间: %s" %stinfo.st_atime
print "a2.py 的修改时间: %s" %stinfo.st_mtime# 修改访问和修改时间
os.utime("a2.py",(1330712280, 1330712292))
print "done!!"
2、更改文件时间属性:
os.utime() 方法用于设置指定路径文件最后的修改和访问时间。
utime()方法语法格式如下:os.utime(path, times),
times -- 如果时间是 None, 则文件的访问和修改设为当前时间 。 否则, 时间是一个 2-tuple数字, (atime, mtime) 用来分别作为访问和修改的时间。
import osfile_path = "pip.txt"
print(os.stat(file_path))
# os.stat_result(
# st_mode=33206,
# st_ino=2251799813766228,
# st_dev=3050226722,
# st_nlink=1,
# st_uid=0,
# st_gid=0,
# st_size=851,
# st_atime=1576241919,
# st_mtime=1574385498,
# st_ctime=1576241919,
# )# 只能修改 访问时间 与 修改时间(不能修改创建时间)
os.utime(file_path, (1576335480, 1576335480))
print(os.stat(file_path))
二、用python三方库 win32file的API
from win32file import CreateFile, SetFileTime, GetFileTime, CloseHandle
from win32file import GENERIC_READ, GENERIC_WRITE, OPEN_EXISTING
from pywintypes import Time # 可以忽视这个 Time 报错(运行程序还是没问题的)
import timedef 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)if __name__ == '__main__':# 需要自己配置cTime = "2019-12-13 21:51:02" # 创建时间mTime = "2019-02-02 00:01:03" # 修改时间aTime = "2019-02-02 00:01:04" # 访问时间fName = r"E:\test_pro\fileOperate\test.xlsx" # 文件路径,文件存在才能成功(可以写绝对路径,也可以写相对路径)offset = (0, 1, 2) # 偏移的秒数(不知道干啥的)# 调用函数修改文件创建时间,并判断是否修改成功r = modifyFileTime(fName, cTime, mTime, aTime, offset)if r == 0:print('修改完成')elif r == 1:print('修改失败')
python两种方法读取、修改文件的创建时间、修改时间、访问时间相关推荐
- python删除空文件和文件夹_python 两种方法删除空文件夹
第一种方法: import os def delete_gap_dir(dir): if os.path.isdir(dir): for d in os.listdir(dir): #print(&q ...
- cad添加自己线性_创建cad线型的两种方法(线型文件和linetype) - CAD自学网
作图过程中,我们最常见的线型是实线.虚线.点划线.有的时候这些基本线型可能满足不了你的需求.CAD也有自带的特殊线型,比如-HW-,这种自带文字的线型.但你想要的确实-X-.那么这便涉及到新线型的建立 ...
- Python两种方法求解登楼梯问题(京东2016笔试题)
问题:假设一段楼梯共15个台阶,小明一步最多能上3个台阶,那么小明上这段楼梯一共有多少种方法? 解析:从第15个台阶上往回看,有3种方法可以上来(从第14个台阶上一步迈1个台阶上来,从第13个台阶上一 ...
- python读取nc文件转成img_使用python的netCDF4库读取.nc文件 和 创建.nc文件[转]
使用python netCDF4库读取.nc文件 和 创建.nc文件 1. 介绍 .nc(network Common Data Format)文件是气象上常用的数据格式,python上读取.nc使用 ...
- MATLAB笔记:打开数据文件的三种方法+读取数据文件的两种方法+保存数据文件的两种方法
1.打开数据文件 1.1 直接打开文件 PATHNAME = 'C:\Users\s55\Desktop\dat'; FILENAME = '\data_1.dat'; str0=strcat(PAT ...
- python两种方法解决线程冲突问题
本博文源于python基础炫酷技能,主要讲述python的线程的问题.大家学到多线程的时候只要搞明白两种东西即可,第一线程通信,另一个叫做线程冲突.本博文就以一种打印数字的方法浅析线程冲突的解决方案! ...
- matlab两种方法将NC文件中的gregorian日期转换成年月日ymd
在读取某一些科研数据集的时候,采用netcdf的存储格式,其中往往会遇到以下的情况: time Size: 1x1Dimensions: timeDatatype: doubleAttributes: ...
- 教你两种方法,轻松锁定数据不被修改
又到年底了,大家在忙着收集数据的同时还在忙着共享一些数据.那么问题来了,当有些数据我们只想让大家查看而不想让大家修改里面的内容时,我们该如何进行操作来保护表格中的数据不被修改呢? 接下来小编就给大家分 ...
- 两种方式读取Json文件 数据
首先下载LitJson.dll 文件,并将其拖入 Unity项目中的 的 Assets/Plugins目录中 其次在你的Unity项目中创建好Assets/StreamingAssets文件夹,用于存 ...
最新文章
- 【Prometheus】 Prometheus 入门到实战搭建监控系统
- python导入包相当于什么_Python 引入包的两种方式区别
- kubernetes集群搭建以及遇到的问题
- 手机版本高于xcode,xcode的快速升级
- 【Android】Apk安装方式
- php分页代码 页数太多,php google或baidu分页代码
- javascript --- [虚拟DOM] 初始化 实现
- JavaScript | 使用提示从用户输入值
- python3基础知识一
- Centos7下python3安装ipython
- 流程管理无效的几个判定标准?
- 【POJ】2454.Jersey Politics
- matlab interp2插值函数的使用
- DEM数据下载、镶嵌等问题
- com.android.htcdialer+意外停止+htc,HTC刷机为什么会变砖 HTC刷机变砖修复方法介绍【教程】...
- go语言遍历目录中的文件
- unity 素材分享
- 现代测试技术与软件关系大吗,2013.现代测试技术.复习要点.docx
- 如何建立英文字符的哈希表
- FUD(恐惧,不确定性和怀疑)被揭穿...