如何提取 Python 目录中每个文件的 'last modified time'?
How do I pull the 'last modified time' of each file within a directory in Python?
我的任务是创建一个小应用程序,允许用户:
浏览并选择一个包含每天要检查的文件的特定文件夹,
浏览并选择将接收复制文件的特定文件夹,
并手动启动脚本执行的 'file check' 进程。
为此,我需要获取最后 mod 时间并添加一个 if 语句来检查文件是否超过 24 小时,然后它将文件移至正确的文件夹。我想我知道该怎么做。我 运行 遇到问题的地方是 os.path.getmtime 方法。据我了解,我无法获得多个文件的 mod 化时间。我必须专门命名该文件。所以 '../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 语句来查看它是否超过一天。但是,这仍然只是一个单一的文件基础,对于我希望程序执行的操作来说确实不起作用。我希望它对文件夹中的所有文件执行此操作,而不管这些文件的名称是什么,或者其中有多少。任何帮助将不胜感激!
这是我用来迭代文件夹并分别获取每个文件 mod 时间的脚本:
for file in os.listdir('../File Transfer/Old Files/'):
if file.endswith ('.txt'):
time_mod = os.path.getmtime(file)
print(time_mod)
忽略最后一行。那只是给我的,所以请查看故障排除结果。
对于 getmtime
,return 值是一个数字,表示自纪元以来的秒数。因此我们可以使用 datetime
模块来获取对应的日期时间对象。
from os.path import getmtime
from datetime import datetime as dt
m_time = getmtime('somefile.txt')
time = dt.fromtimestamp(m_time)
示例:
>>> time = getmtime('wsgi.py')
>>> time
1619622258.1773882
>>> dt.fromtimestamp(time)
datetime.datetime(2021, 4, 28, 20, 34, 18, 177388)
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)
导入os 模块和日期时间模块。使用 os 模块中的 path.getmtime() 方法。它会给你时间戳。然后使用 datetime 模块的 datetime.fromtimestamp() 方法将其转换为正常时间。
示例如下:
import os, datetime
n = os.path.getmtime("your file path")
print(datetime.datetime.fromtimestamp(n))
我的任务是创建一个小应用程序,允许用户: 浏览并选择一个包含每天要检查的文件的特定文件夹, 浏览并选择将接收复制文件的特定文件夹, 并手动启动脚本执行的 'file check' 进程。 为此,我需要获取最后 mod 时间并添加一个 if 语句来检查文件是否超过 24 小时,然后它将文件移至正确的文件夹。我想我知道该怎么做。我 运行 遇到问题的地方是 os.path.getmtime 方法。据我了解,我无法获得多个文件的 mod 化时间。我必须专门命名该文件。所以 '../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 语句来查看它是否超过一天。但是,这仍然只是一个单一的文件基础,对于我希望程序执行的操作来说确实不起作用。我希望它对文件夹中的所有文件执行此操作,而不管这些文件的名称是什么,或者其中有多少。任何帮助将不胜感激!
这是我用来迭代文件夹并分别获取每个文件 mod 时间的脚本:
for file in os.listdir('../File Transfer/Old Files/'):
if file.endswith ('.txt'):
time_mod = os.path.getmtime(file)
print(time_mod)
忽略最后一行。那只是给我的,所以请查看故障排除结果。
对于 getmtime
,return 值是一个数字,表示自纪元以来的秒数。因此我们可以使用 datetime
模块来获取对应的日期时间对象。
from os.path import getmtime
from datetime import datetime as dt
m_time = getmtime('somefile.txt')
time = dt.fromtimestamp(m_time)
示例:
>>> time = getmtime('wsgi.py')
>>> time
1619622258.1773882
>>> dt.fromtimestamp(time)
datetime.datetime(2021, 4, 28, 20, 34, 18, 177388)
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)
导入os 模块和日期时间模块。使用 os 模块中的 path.getmtime() 方法。它会给你时间戳。然后使用 datetime 模块的 datetime.fromtimestamp() 方法将其转换为正常时间。
示例如下:
import os, datetime
n = os.path.getmtime("your file path")
print(datetime.datetime.fromtimestamp(n))