【问题标题】:Change working directory to most recently generated directory将工作目录更改为最近生成的目录
【发布时间】:2021-01-22 14:59:51
【问题描述】:

有没有办法将您的目录更改为最近生成的目录?我每 12 小时创建一个新目录,并希望迭代地遍历最近的 x 个目录。

与此类似,但用于目录。

How to get the latest file in a folder using python

【问题讨论】:

  • glob.glob 会返回目录和文件,怎么回事?
  • 在修改 glob 表达式以仅返回目录后,链接的答案应该可以工作:list_of_files = glob.glob('/path/to/folder/*/')

标签: python


【解决方案1】:

以下应该基本上可以工作。

import os

parent_dir = "."  # or whatever

paths = [os.path.join(parent_dir, name) for name in os.listdir(parent_dir)]
dirs = [path for path in paths if os.path.isdir(path)]
dirs.sort(key=lambda d: os.stat(d).st_mtime)
os.chdir(dirs[-1])

请注意,这将更改为具有最近修改时间的目录。这可能不是最近创建的 目录,如果一个预先存在的目录被修改(通过创建或删除其中的某些内容);有关何时创建目录的信息不是存储在任何地方的信息——当然,除非您使用反映创建时间的目录命名,在这种情况下,您可以根据名称而不是修改时间进行排序。

我没有费心在此过程中通过在短时间内创建/删除目录来防止竞争条件(这可能会导致它引发异常)。老实说,这不太可能,如果你想处理这种可能性,这样做就足够了:

while True:
    try:
        #all the above commands
        break
    except OSError:
        pass

【讨论】:

  • 不错。这正是我一直在寻找的。感谢您对创建与修改的澄清。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2010-11-28
  • 2019-08-09
  • 2013-10-13
  • 1970-01-01
  • 1970-01-01
  • 2018-07-12
  • 1970-01-01
相关资源
最近更新 更多