首页 > 解决方案 > 如何扫描目录中的文件夹并在末尾获取最高编号的文件夹-python

问题描述

我对python真的很陌生,我正在尝试自动化程序。我有一些文件夹,我想在最后输入编号最大的文件夹。在图片中我有一些文件夹。我想把数字最高的文件夹放在最后。例如在这张图片中,folder_4 这是我到目前为止所尝试的。我不知道如何继续,或者我的代码是否有效。

import os
import shutil
import glob

path="N:\QA\Automation\Projects\AT_Projects"
projectlist = os.listdir(path)
for project in projectlist:
    projectdir = path + "\\" + project
    file_path=[]
    print(projectlist)
 
    if os.path.isdir(projectdir):
        folders=os.listdir(projectdir)
        for folder in folders:
            file_path=folder
        
      
            if os.folderdir.isdir(folder):
            
               print('true')

   
    else:
        print("done")

我想扫描文件夹,最后输入 folder_4 以从中获取一些东西。

我该怎么做这个扫描?

标签: pythonscanning

解决方案


假设所有内容都在同一个文件夹中,您可以执行以下操作:

from pathlib import Path

p = Path.cwd()  # Alternatively, use Path(<your folder path>) to point to another folder
sorted_folders = list(sorted(p.glob("*[0-9]/"), key=lambda x: int(x.name.split("_")[-1])))

这适用于包含您要排序的文件夹的文件夹。

打破这个:

  1. 使用 pathlib.Path 您可以获得当前工作目录的 Path 对象
  2. 将 Path.glob 与模式“*[0-9]/”一起使用,它为您提供了一个生成器,用于生成目录(所有文件夹)中以数字结尾的所有内容
  3. 使用 sorted,键是“在 _ 上拆分名称并取该名称的最后一部分”,例如“folder_1”-> [“folder”,“1”]。我们应用 int 以便这里的最后一个元素被视为数字,而不是字符串
  4. 创建一个列表,以便您按顺序排列文件夹

如果您想要编号最大的文件夹,您可以选择列表中的最后一个成员

sorted_folders[-1]

推荐阅读