【问题标题】:How do I get the path of the last listed directory in a directory? [duplicate]如何获取目录中最后列出的目录的路径? [复制]
【发布时间】:2019-01-02 21:36:56
【问题描述】:

我有一个如下所示的文件夹设置。

myscript.py
directory/
- subdir1/
- subdir2/
- subdir3/

有时新文件夹会添加到directory/,但每个新文件夹始终命名为subdirX,其中X 是一个加1 的数字。

如何获取directory/中列出的最后一个文件夹的路径?

【问题讨论】:

    标签: python directory


    【解决方案1】:
    x = ['subdir{}'.format(i) for i in range(100)]
    max(x, key=lambda n: int(n[6:]))
    

    max 函数将按字典顺序排序,但会将 '99' 放在 '100' 之后 (9 > 1)。所以首先提取整数部分(n[6:]),转换为int,然后从那里得到最大值。

    【讨论】:

      【解决方案2】:

      你应该使用os.listdir()获取目录下的所有文件,然后使用max()获取后缀号最高的文件,最后使用os.path.join()将文件名与目录名连接起来路径名。

      import os
      print(os.path.join('directory', max(os.listdir('directory'), key=lambda n: int(n.replace('subdir', '')))))
      

      【讨论】:

      • 不必要地删除然后重新添加子目录字符串。
      • 请再读一遍。删除仅在用于数字比较的 key 函数内完成。之后永远不会有任何“重新添加”。之后唯一要做的就是加入主目录,与子目录无关。
      • 你说的太对了
      【解决方案3】:

      另一个可能的解决方案是检查最后创建的文件。您可以通过命令os.stat(folder).st_ctime 来检查文件夹的状态:

      import os
      last =  max(os.listdir(), key=lambda x: os.stat(x).st_ctime)
      

      【讨论】:

        猜你喜欢
        • 2014-04-09
        • 2015-08-09
        • 1970-01-01
        • 2013-02-02
        • 2011-12-26
        • 1970-01-01
        • 1970-01-01
        • 2012-12-26
        • 1970-01-01
        相关资源
        最近更新 更多