我正在尝试使用自动脚本进入最近创建的文件夹.
我在下面有一些代码
import datetime, os, shutil
today = datetime.datetime.now().isoformat()
file_time = datetime.datetime.fromtimestamp(os.path.getmtime('/folders*'))
if file_time < today:
changedirectory('/folders*')
Run Code Online (Sandbox Code Playgroud)
我不知道如何从现在开始检查最新的时间戳.有任何想法吗?
谢谢
Ale*_*lli 54
还有的"创建时间"没有实际的跟踪中最OS /文件系统:你得到的是mtime一个文件或目录的时间修改(因此,例如创建一个目录中的文件更新该目录的修改时间) -和ctime,提供时,最新inode更改的时间(因此将通过创建或删除子目录来更新).
假设您没有使用例如"last-modified"(并且您在问题中使用"created"只是一个错误),您可以找到(例如)当前目录的所有子目录:
import os
all_subdirs = [d for d in os.listdir('.') if os.path.isdir(d)]
Run Code Online (Sandbox Code Playgroud)
并获得最新的mtime(在Python 2.5或更高版本中):
latest_subdir = max(all_subdirs, key=os.path.getmtime)
Run Code Online (Sandbox Code Playgroud)
如果你需要在当前目录以外的地方操作,那就不一样了,例如:
def all_subdirs_of(b='.'):
result = []
for d in os.listdir(b):
bd = os.path.join(b, d)
if os.path.isdir(bd): result.append(bd)
return result
Run Code Online (Sandbox Code Playgroud)
该latest_subdir转让不改变给定的,因为all_subdirs,路径任何列表(无论是目录或文件的路径,即max通话中获取最新的修饰一个).
Python 版本 3.4+
我们可以尝试pathlib,解决方案将是一个衬垫
查找最新
import pathlib, os
max(pathlib.Path(directory).glob('*/'), key=os.path.getmtime)
Run Code Online (Sandbox Code Playgroud)
获取最新第 n 个
import pathlib, os
sorted(pathlib.Path(directory).glob('*/'), key=os.path.getmtime)[-n]
Run Code Online (Sandbox Code Playgroud)
小智 8
快速的单线:
directory = 'some/path/to/the/main/dir'
max([os.path.join(directory,d) for d in os.listdir(directory)], key=os.path.getmtime)
Run Code Online (Sandbox Code Playgroud)
一个班轮找到最新的
# Find latest
import os; import glob
max(glob.glob(os.path.join(directory, '*/')), key=os.path.getmtime)
Run Code Online (Sandbox Code Playgroud)
一个班轮找到最新的
# Find n'th latest
import os; import glob
sorted(glob.glob(os.path.join(directory, '*/')), key=os.path.getmtime)[-n]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
32739 次 |
| 最近记录: |