如何获取在项目文件夹中创建的最新子目录

问题描述 投票:0回答:2

我试图获取项目目录中文件夹的最后修改目录。使用下面的代码,我可以仅为目录中保存的脚本获取最后修改的目录,但我想获取文件夹的最后修改的subdir,它位于项目目录中。

我只想获取文件夹名称,而不是整个路径,因为我将增加文件夹名称+1并在达到上述文件夹的文件限制时创建新文件夹。

我的代码是:

import os
import glob


all_subdirs = [d for d in os.listdir('/root/visual-
studio/testfolder/testsubdir/') if os.path.isdir(d)]
latest_subdir = max(all_subdirs, key=os.path.getmtime)

print(latest_subdir) 

该脚本保存到testfolder,当我运行脚本时,它只给testfolders最后修改过的目录。但我想得到testsubdirs最新目录。

当我为testsubdirs运行下面的脚本时,我收到此错误:

Traceback (most recent call last):
  File "/root/visual-studio/testfolder/test.py", line 40, in <module>
    latest_subdir = max(all_subdirs, key=os.path.getmtime)
ValueError: max() arg is an empty sequence
python python-3.x
2个回答
0
投票

T认为问题是os.path.listdir()只返回文件或子目录名称,而不是它们的完整路径。这个最简单的解决方法是使用glob.glob()返回匹配条目的完整路径(如果搜索模式中有一个,那就是):

import os
import glob

all_subdirs = [d for d in glob.glob('/root/visual-studio/testfolder/testsubdir/*') 
                if os.path.isdir(d)]

latest_subdir = max(all_subdirs, key=os.path.getmtime)
print(latest_subdir)

0
投票

@martineau给了我线索,我做了一些挖掘库文件并找到了这个解决方案。正如我之前提到的,我无法接收路径的最后一个目录名而不是完整路径。

所以这是代码:

import os
import glob

all_subdirs = [d for d in glob.glob('/root/testfolder/testsubdir/*') 
            if os.path.isdir(d)]

latest_subdir = max(all_subdirs, key=os.path.getmtime)
r = os.path.basename(os.path.normpath(latest_subdir))
print(r)
© www.soinside.com 2019 - 2024. All rights reserved.