Я хочу читать папки на python и, возможно, составить список. Теперь моя главная проблема заключается в том, что самая последняя папка должна находиться в месте, которое мне известно. Это может быть первый элемент или последний элемент списка. Я добавляю изображение, предлагающее имя папки. Я хочу, чтобы папка с именем 20181005 была либо первой в списке, либо последней в списке.
Я пробовал эту задачу и использовал os.listdir, но я не очень уверен в том, как эта функция читает папки и сохраняет в виде списка. Будет ли он хранить первую папку в качестве элемента или будет использовать дату создания или дату изменения. Если бы я мог сортироваться по названию (20181005 и т.д.), Это было бы очень хорошо.
Пожалуйста, предложите подходящий метод для этого.
С уважением
Предполагалось, что в ваших каталогах есть имена YYYYMMDD. Затем вы можете использовать listdir и сортировать, чтобы получить последний каталог в последнем индексе.
import os
from os import listdir
mypath = 'D:\\anil'
list_dirs = []
for f in listdir(mypath):
if os.path.isdir(os.path.join(mypath, f)):
list_dirs.append(f)
list_dirs.sort()
for current_dir in list_dirs:
print(current_dir)
os.listdir возвращает содержимое каталога в произвольном порядке, но вы можете сортировать его самостоятельно:
l = sorted(listdir())
Поскольку кажется, что ваши имена папок соответствуют датам ISO, они должны сортироваться правильно, а последний из них должен быть последним элементом после сортировки.
Если вам нужно получить доступ к времени создания и модификации, вы можете сделать это с os.path
функций os.path
. Если вы хотите отсортировать это, я бы, вероятно, предпочел бы поместить его в нечто вроде pandas DataFrame, чтобы было легче манипулировать.
import os
from datetime import datetime
import pandas as pd
path = "."
objects = os.listdir(path)
dirs = list()
for o in objects:
opath = os.path.join(path, o)
if os.path.isdir(opath):
dirs.append(dict(path=opath,
mtime=datetime.fromtimestamp(os.path.getmtime(opath)),
ctime=datetime.fromtimestamp(os.path.getctime(opath))))
data = pd.DataFrame(dirs)
data.sort_values(by='mtime')