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