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