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

时间:2018-03-19 15:18:50

标签: python python-3.x

我正在尝试获取项目目录中文件夹的最后修改目录。使用下面的代码,我可以仅为目录中保存的脚本获取最后修改的目录,但我想获取项目目录中文件夹的最后修改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

2 个答案:

答案 0 :(得分:0)

认为问题是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)

答案 1 :(得分: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)