Python 修改文件创建时间,修改时间(支持任意时间修改)

# !/usr/bin/python3
# -*- coding:utf-8 -*-
"""
@author: JHC000abc@gmail.com
@file: change_files_times.py
@time: 2023/11/22 11:55 
@desc: 

"""

import os
import time
import ctypes


def parse_date(date):
    """
    2023-12-12 12:12:12 解析时间
    """
    head,tail = date.split(" ")
    year,month,day = head.split("-")
    hour,min,sec = tail.split(":")
    return year,month,day,hour,min,sec


def change_file_creation_time(file_path, year,month,day,hour,min,sec):
    """
	修改文件更改时间
    """
    new_creation_time = time.mktime((int(year), int(month), int(day), int(hour), int(min), int(sec), 0, 0, 0))
    # 获取文件的修改时间和访问时间
    access_time = os.path.getatime(file_path)
    modified_time = os.path.getmtime(file_path)

    # 修改文件的修改时间
    os.utime(file_path, (access_time, new_creation_time))





def change_system_times(year,month,day,hour,min,sec,msec="0"):
    """
	调用系统接口更改系统时间,隔一段时间系统时钟会自动更新回当前真实时间
    """
    # 定义 SYSTEMTIME 结构体
    class SYSTEMTIME(ctypes.Structure):
        _fields_ = [
            ('wYear', ctypes.c_ushort),
            ('wMonth', ctypes.c_ushort),
            ('wDayOfWeek', ctypes.c_ushort),
            ('wDay', ctypes.c_ushort),
            ('wHour', ctypes.c_ushort),
            ('wMinute', ctypes.c_ushort),
            ('wSecond', ctypes.c_ushort),
            ('wMilliseconds', ctypes.c_ushort)
        ]

    # 设置目标日期
    target_date = SYSTEMTIME(
        wYear=int(year),
        wMonth=int(month),
        wDayOfWeek=0,  # 这里可以忽略,程序会自动填充正确的值
        wDay=int(day),
        wHour=int(hour)-8,
        wMinute=int(min),
        wSecond=int(sec),
        wMilliseconds=int(msec)
    )

    # 调用 SetSystemTime 函数设置系统日期
    ctypes.windll.kernel32.SetSystemTime(ctypes.byref(target_date))

def cp_files(file,out_path):
    """
	复制文件,实现更改文件创建时间
    """
    name = os.path.split(file)[-1]
    save_file = os.path.join(out_path,name)
    with open(file,"rb")as fp,\
    open(save_file,"wb")as fp2:
        fp2.write(fp.read())
    return save_file

def main(create_time,change_time,in_file,out_path):
	"""
	处理流程
	"""
    year, month, day, hour, min, sec = parse_date(create_time)
    change_system_times(year, month, day, hour, min, sec)
    save_file = cp_files(in_file,out_path)
    year, month, day, hour, min, sec = parse_date(change_time)
    change_file_creation_time(save_file, year,month,day,hour,min,sec)





if __name__ == '__main__':
	# 备注:程序运行必须获取管理员权限,否则,修改文件创建时间将失败
    in_file = input("请输入要修改文件路径:")
    out_path = input("请输入更改时间后文件保存路径:")
    create_time = input("请输入文件创建时间:[2023-12-12 12:12:12]")
    change_time = input("请输入文件修改时间:[2023-12-12 12:12:12]")

    # in_file = R"D:\Desktop\miniblink-20230412\更新日志.txt"
    # out_path = R"D:\Desktop"
    # create_time = "2020-12-12 12:12:12"
    # change_time = "2021-12-12 12:12:12"

    main(create_time,change_time,in_file,out_path)

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 要使用`easydict`创建一个简单的字典对象,你可以按照以下步骤进行: 1. 安装`easydict`库:你可以使用pip命令来安装此库,命令为`pip install easydict`。 2. 导入库:在python文件的开头,使用`import easydict`来导入库。 3. 创建字典对象:通过调用`easydict.EasyDict()`方法,创建一个空的字典对象,例如: ``` import easydict my_dict = easydict.EasyDict() ``` 4. 向字典中添加键值对:你可以通过以下两种方式向字典中添加键值对: ``` my_dict.key = value ``` 或者 ``` my_dict['key'] = value ``` 其中,`key`是你要添加的键,`value`是你要添加的值。 5. 访问字典中的值:你可以使用以下两种方式访问字典中的值: ``` my_dict.key ``` 或者 ``` my_dict['key'] ``` 其中,`key`是你要访问的键。 这样,你就可以使用`easydict`创建一个简单的字典对象了。 ### 回答2: Python的easydict是一个简单易用的字典扩展工具。它是一个轻量级的Python包,可以通过简单的方式来创建和操作字典。 使用easydict创建字典非常简单。首先,我们需要安装easydict库,可以通过使用pip来安装。在终端或命令提示符中键入以下命令即可完成安装: ``` pip install easydict ``` 安装完成后,我们可以在Python脚本中导入easydict库并创建字典对象。首先,我们需要引入`easydict`模块: ```python from easydict import EasyDict ``` 接下来,我们可以使用`EasyDict`类来创建一个空的字典对象。例如: ```python my_dict = EasyDict() ``` 我们也可以通过传入一个字典或关键字参数来创建一个带有初始值的字典。例如: ```python my_dict = EasyDict({'key1': 'value1', 'key2': 'value2'}) ``` 或者: ```python my_dict = EasyDict(key1='value1', key2='value2') ``` 创建完字典后,我们可以像使用普通字典一样,通过键值对方式来访问和修改字典的元素。例如: ```python print(my_dict.key1) # 输出'value1' my_dict.key2 = 'new value2' print(my_dict.key2) # 输出'new value2' ``` 我们还可以像使用字典一样,在字典中添加新的键值对。例如: ```python my_dict.key3 = 'value3' print(my_dict.key3) # 输出'value3' ``` 总的来说,通过easydict,我们可以更加简便地操作字典对象。它提供了一种更加易读和易写的方式来创建和访问字典,使得我们可以更加高效地处理字典相关的任务。 ### 回答3: Python的EasyDict是一个简单但强大的库,用于创建字典对象。它扩展了Python自带的内置字典,提供了一些方便的功能。 使用EasyDict创建字典非常简单。首先,我们需要安装easydict库。可以使用pip命令进行安装: ``` pip install easydict ``` 安装完成后,我们可以开始使用EasyDict。 首先,我们需要导入easydict模块: ```python from easydict import EasyDict ``` 然后,我们可以使用EasyDict创建一个字典对象: ```python my_dict = EasyDict() ``` 我们可以像使用普通字典一样向其中添加键值对: ```python my_dict.key1 = 'value1' my_dict.key2 = 'value2' ``` 我们还可以使用字典的方式来访问和修改字典的值: ```python print(my_dict.key1) # 输出'value1' my_dict.key2 = 'new_value2' # 修改键'key2'对应的值为'new_value2' ``` EasyDict还可以接受一个字典作为参数,用于初始化创建字典对象: ```python my_dict = EasyDict({'key1': 'value1', 'key2': 'value2'}) ``` 使用EasyDict相比于传统的字典,具有以下几个优点: 1. 可以直接使用点语法来访问和修改字典的键值对; 2. 可以向字典中添加任意的键值对,而不需要事先定义; 3. 可以通过传递一个字典作为参数来创建字典对象。 总之,EasyDict提供了一种更加便捷和灵活的方式来创建和操作字典对象,使得Python编程更加简单和高效。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值