如何扫描目录中的文件夹并在末尾获取最高编号的文件夹-python
Posted
技术标签:
【中文标题】如何扫描目录中的文件夹并在末尾获取最高编号的文件夹-python【英文标题】:how to scan folders in directory and get the folder with the highest number at the end -python 【发布时间】:2021-09-27 17:04:19 【问题描述】:我对 python 很陌生,我正在尝试自动化程序。 我有一些文件夹,我想输入最后数字最大的文件夹。in the picture i have some folders. and i want to take the folder with the highest number at the end. for example in this picture, 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 以从中获取一些东西。
如何进行此扫描?
【问题讨论】:
“扫描”是什么意思?您已经使用listdir
来获取文件夹的名称。
取决于您到底想做什么。您可以再次使用listdir
,然后使用open
,或者复制它。你可以看看shutil
文件夹是递归的吗?或者只是“***”
对不起,也许扫描这个词不适合描述我想要的东西。我的意思是它将获取所有文件夹名称并在最后输出具有最高编号的文件夹
【参考方案1】:
假设所有内容都在同一个文件夹中,您可以执行以下操作:
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])))
这适用于包含您要排序的文件夹的文件夹。
分解:
-
使用 pathlib.Path 可以获得当前工作目录的 Path 对象
使用带有“*[0-9]/”模式的 Path.glob,它为您提供了一个生成器,用于生成目录(所有文件夹)中以数字结尾的所有内容
使用 sorted,键是“在 _ 上拆分名称并取该名称的最后一部分”,例如“文件夹_1”-> [“文件夹”,“1”]。我们应用 int 以便这里的最后一个元素被视为数字,而不是字符串
创建一个列表,以便按顺序排列文件夹
如果您想要编号最大的文件夹,您可以选择列表中的最后一个成员
sorted_folders[-1]
【讨论】:
如果目录不是以数字结尾的,这将失败。也许使用glob("*[0-9]/")
不确定语法是什么
好建议!我假设所有文件夹都遵循数字模式。但是,如果您可以更具体地了解名称模式,则无需做出假设以上是关于如何扫描目录中的文件夹并在末尾获取最高编号的文件夹-python的主要内容,如果未能解决你的问题,请参考以下文章
DOS下如何按TXT文件中的编号查找在目录或者子目录中对应编号的文件