看到网上有人出于特种目前,需要修改文件的创建时间和修改时间(访问时间是只要在操作系统里打开文件,系统就会自动更改最后的访问时间,因此此时间无意义,于是在网上查阅结合自己的经验,归纳 一下可行方案,在 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两种方法读取、修改文件的创建时间、修改时间、访问时间相关推荐

  1. python删除空文件和文件夹_python 两种方法删除空文件夹

    第一种方法: import os def delete_gap_dir(dir): if os.path.isdir(dir): for d in os.listdir(dir): #print(&q ...

  2. cad添加自己线性_创建cad线型的两种方法(线型文件和linetype) - CAD自学网

    作图过程中,我们最常见的线型是实线.虚线.点划线.有的时候这些基本线型可能满足不了你的需求.CAD也有自带的特殊线型,比如-HW-,这种自带文字的线型.但你想要的确实-X-.那么这便涉及到新线型的建立 ...

  3. Python两种方法求解登楼梯问题(京东2016笔试题)

    问题:假设一段楼梯共15个台阶,小明一步最多能上3个台阶,那么小明上这段楼梯一共有多少种方法? 解析:从第15个台阶上往回看,有3种方法可以上来(从第14个台阶上一步迈1个台阶上来,从第13个台阶上一 ...

  4. python读取nc文件转成img_使用python的netCDF4库读取.nc文件 和 创建.nc文件[转]

    使用python netCDF4库读取.nc文件 和 创建.nc文件 1. 介绍 .nc(network Common Data Format)文件是气象上常用的数据格式,python上读取.nc使用 ...

  5. MATLAB笔记:打开数据文件的三种方法+读取数据文件的两种方法+保存数据文件的两种方法

    1.打开数据文件 1.1 直接打开文件 PATHNAME = 'C:\Users\s55\Desktop\dat'; FILENAME = '\data_1.dat'; str0=strcat(PAT ...

  6. python两种方法解决线程冲突问题

    本博文源于python基础炫酷技能,主要讲述python的线程的问题.大家学到多线程的时候只要搞明白两种东西即可,第一线程通信,另一个叫做线程冲突.本博文就以一种打印数字的方法浅析线程冲突的解决方案! ...

  7. matlab两种方法将NC文件中的gregorian日期转换成年月日ymd

    在读取某一些科研数据集的时候,采用netcdf的存储格式,其中往往会遇到以下的情况: time Size: 1x1Dimensions: timeDatatype: doubleAttributes: ...

  8. 教你两种方法,轻松锁定数据不被修改

    又到年底了,大家在忙着收集数据的同时还在忙着共享一些数据.那么问题来了,当有些数据我们只想让大家查看而不想让大家修改里面的内容时,我们该如何进行操作来保护表格中的数据不被修改呢? 接下来小编就给大家分 ...

  9. 两种方式读取Json文件 数据

    首先下载LitJson.dll 文件,并将其拖入 Unity项目中的 的 Assets/Plugins目录中 其次在你的Unity项目中创建好Assets/StreamingAssets文件夹,用于存 ...

最新文章

  1. 【Prometheus】 Prometheus 入门到实战搭建监控系统
  2. python导入包相当于什么_Python 引入包的两种方式区别
  3. kubernetes集群搭建以及遇到的问题
  4. 手机版本高于xcode,xcode的快速升级
  5. 【Android】Apk安装方式
  6. php分页代码 页数太多,php google或baidu分页代码
  7. javascript --- [虚拟DOM] 初始化 实现
  8. JavaScript | 使用提示从用户输入值
  9. python3基础知识一
  10. Centos7下python3安装ipython
  11. 流程管理无效的几个判定标准?
  12. 【POJ】2454.Jersey Politics
  13. matlab interp2插值函数的使用
  14. DEM数据下载、镶嵌等问题
  15. com.android.htcdialer+意外停止+htc,HTC刷机为什么会变砖 HTC刷机变砖修复方法介绍【教程】...
  16. go语言遍历目录中的文件
  17. unity 素材分享
  18. 现代测试技术与软件关系大吗,2013.现代测试技术.复习要点.docx
  19. 如何建立英文字符的哈希表
  20. FUD(恐惧,不确定性和怀疑)被揭穿...

热门文章

  1. ant design vue 表头自定义筛选
  2. 美国数学建模比赛建议
  3. 如何使用JiaoZiVideoPlayer(饺子视频播放器)播放avi格式的视频
  4. DataGridView和GridView控件的区别是
  5. TSC MH240 打印机驱动
  6. 全球No.1集装箱人工智能领军企业中集飞瞳,已完成上百万AI集装箱箱况检测,上亿箱信息识别,全球最先进集装箱AI动态感知箱况检测
  7. 微博 - 如何修改微博昵称?
  8. 手机号码归属地查询免费api接口代码
  9. Direct3D 11 Devices
  10. 1.7.2 W3C代码标准及规范(完整版)