Python - 使用今天的日期复制文件夹中的最新文件并执行在文件中找到的宏[关闭]

Posted

技术标签:

【中文标题】Python - 使用今天的日期复制文件夹中的最新文件并执行在文件中找到的宏[关闭]【英文标题】:Python - Copy most recent file in folder with today's date and execute macro found in file [closed] 【发布时间】:2021-09-13 20:21:47 【问题描述】:

每天早上我必须复制昨天的文件,将其粘贴为今天的文件,通过宏刷新 PowerQuery 并将文件保存为今天的日期。

我开始学习 Python,我找到了一种方法来复制和粘贴带有今天日期的文件。因为我希望它在没有实际文件名限制的情况下运行,所以我希望代码能够选择最近修改的文件,这将始终是昨天的文件,将其复制到文件名中的今天日期,刷新 PowerQuery 和运行宏。

到目前为止,我的代码是文件夹的简单复制粘贴,但我想插入函数:

import shutil

original = r"C:\Users\name\Desktop\9.13.2021 - Daily Item Record.xlsm"
target = r"C:\Users\name\Desktop\9.14.2021 - Daily Item Record.xlsm"

shutil.copyfile(original, target)

以上涉及每天更改日期。相反,我希望original 文件路径是目录中最新的文件,target 文件是今天日期的副本。

【问题讨论】:

您可以使用os.path.getmtime()获取文件的修改时间。您能否提供一些代码,以便我们更好地帮助您?这是一个类似的问题:How to get file creation & modification date/times in Python? 嘿@SamMatzko,只需输入我非常基本的代码。希望能帮助到你!抱歉...第一次来这里,同时试图了解该网站的运作方式。 欢迎来到 Stack Overflow!我建议阅读Help Center,以便您更好地了解这里的运行方式。 如果您指定了确切的问题,我也会帮助您。您在获取文件的创建日期时遇到问题吗?或者您不确定如何获取当前日期?还是别的什么? @SamMatzko 我遇到的麻烦不是手动指定原始文件和目标文件路径,而是希望原始文件始终是最新的,目标始终包含今天的日期。这样,当我运行代码时,最新的文件(昨天的文件)将被复制并用今天的日期重命名。 【参考方案1】:

这应该可行:

import os
import shutil
import time

my_dir = "C:\\Users\\name\Desktop\\"

# A dictionary for storing the files
files_dict = 

# Put the creation time and the path for each file in the directory into files_dict
for f in os.listdir(my_dir):
    file = my_dir + f
    file_createdtime = os.path.getctime(file)
    files_dict[file_createdtime] = file

# Get the most recently created file
most_recent_file = files_dict[max(files_dict)]

# Copy and rename the file
shutil.copy(file, os.path.dirname(file) + time.strftime("\\%m.%d.%Y - Daily Item Record.xlsm"))

for 循环中,我为每个文件的创建时间和路径创建了一个字典。 max() 函数返回可迭代序列(在本例中为字典)中的最大值。在下面的代码中,它返回最近创建的文件的创建日期,我可以使用它从字典中获取文件路径并将其放入most_recent_file

在最后一行,我使用time.strftime() 函数以09.13.2021 - Daily Item Record.xlsm 格式复制具有新名称的文件。有关time.strftime 的更多信息,请参阅python 文档。基本上它所做的是将给定字符串中的某些模式替换为某些时间单位。在这里,它将"%m" 替换为当前月份编号,"%d" 替换为当前日期,"%Y" 替换为当前年份。

【讨论】:

非常感谢您抽出宝贵的时间来解决这个问题。我已经修改了my_dir 以适合我的文件,并且我正在尝试使用一些模拟数据对其进行测试,但它不起作用。该程序运行并且没有给出任何错误。我正在尝试调试,以防我遗漏了什么。 在调试中,我看到(unicode error) 'unicodeescape' codec can't decode bytes in position 2-3: truncated \UXXXXXXXX escape 是一个语法错误。不确定这对您是否有用。 开始工作了!只需要在my_dir 的末尾加上`\\`。这是一个了不起的人。再次感谢! @datoro:是的,我在处理答案时出于同样的原因遇到了同样的错误 :-)。

以上是关于Python - 使用今天的日期复制文件夹中的最新文件并执行在文件中找到的宏[关闭]的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Python 中获取最近的工作日? [复制]

如何比较Java中的日期? [复制]

python - 如何通过考虑规则来使python中的日期升序? [复制]

如何在Google表格中使用QUERY返回最大日期的行?

如何从python中的日期时间索引中减去半秒? [复制]

比较Python中的数据框日期时间列值? [复制]