gpt4 book ai didi

python - 如何在 Python 的目录中提取每个文件的 'last modified time'?

转载 作者:行者123 更新时间:2023-12-04 14:04:59 24 4
gpt4 key购买 nike

我的任务是创建一个小应用程序,允许用户:浏览并选择一个包含每天要检查的文件的特定文件夹,浏览并选择将接收复制文件的特定文件夹,并手动启动脚本执行的“文件检查”过程。为此,我需要获取上次修改时间并添加一个 if 语句来检查文件是否超过 24 小时,然后它将文件移至正确的文件夹。我想我知道该怎么做。我遇到问题的地方是 os.path.getmtime 方法。据我了解,我无法获得多个文件的修改时间。我必须专门命名该文件。所以 '../File Transfer/Old Files/' 不起作用。我不断收到同样的错误:

FileNotFoundError: [WinError 2] The system cannot find the file specified: 'LICENSE-MIT.txt' 

(这是 Old Files 文件夹中的第一个 txt 文件)如果我将代码更改为:

x = os.path.getmtime(../File Transfer/Old Files/LICENSE-MIT.txt)

它有效,但有一个并发症。它给了我时间,以秒为单位,在 4490 亿范围内。我可以使用以下代码将该数字转换为可用数字:

y = int(x)
z = y//60//60
print(z)

这使它保持为 int 而不是 float,并将其从秒转换为小时。然后我会做一个 >=24 if 语句来查看它是否超过一天。但是,这仍然只是一个单一的文件基础,对于我希望程序执行的操作来说确实不起作用。我希望它对文件夹中的所有文件执行此操作,而不管这些文件的名称是什么,或者其中有多少。任何帮助将不胜感激!

这是我用来迭代文件夹并分别获取每个文件修改时间的脚本:

for file in os.listdir('../File Transfer/Old Files/'):
if file.endswith ('.txt'):
time_mod = os.path.getmtime(file)
print(time_mod)

忽略最后一行。那只是给我的,所以请查看故障排除结果。

最佳答案

os.listdir()方法列出给定路径的文件不包括路径,因此您需要自己连接路径:

for file in os.listdir('../File Transfer/Old Files/'):
if file.endswith('.txt'):
time_mod = os.path.getmtime('../File Transfer/Old Files/' + file)
print(time_mod)

glob.glob()方法在这种情况下效果很好:

import os
import glob

for file in glob.globr('../File Transfer/Old Files/*.txt'):
time_mod = os.path.getmtime('../File Transfer/Old Files/' + file)
print(time_mod)

您可以获得自上次修改每个文件以来经过的小时数,如下所示:

import os
from time import time

PATH = '../File Transfer/Old Files/'

for file in os.listdir(PATH):
if file.endswith('.txt'):
time_mod = time() - os.path.getmtime(PATH + file)
print(time_mod // 3600)

关于python - 如何在 Python 的目录中提取每个文件的 'last modified time'?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68873111/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com