Запрос, связанный с Python - чтение папок

1

Я хочу читать папки на python и, возможно, составить список. Теперь моя главная проблема заключается в том, что самая последняя папка должна находиться в месте, которое мне известно. Это может быть первый элемент или последний элемент списка. Я добавляю изображение, предлагающее имя папки. Я хочу, чтобы папка с именем 20181005 была либо первой в списке, либо последней в списке.

Я пробовал эту задачу и использовал os.listdir, но я не очень уверен в том, как эта функция читает папки и сохраняет в виде списка. Будет ли он хранить первую папку в качестве элемента или будет использовать дату создания или дату изменения. Если бы я мог сортироваться по названию (20181005 и т.д.), Это было бы очень хорошо.

Пожалуйста, предложите подходящий метод для этого.

С уважением Изображение 174551

Теги:

3 ответа

0

Предполагалось, что в ваших каталогах есть имена 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)
  • 0
    Спасибо, это работает.
  • 0
    @mohchu, если он работает, пометьте это как ответ. Спасибо за повтор.
0

os.listdir возвращает содержимое каталога в произвольном порядке, но вы можете сортировать его самостоятельно:

l = sorted(listdir())

Поскольку кажется, что ваши имена папок соответствуют датам ISO, они должны сортироваться правильно, а последний из них должен быть последним элементом после сортировки.

  • 0
    Спасибо, это работает.
  • 1
    Пожалуйста, примите ответ
0

Если вам нужно получить доступ к времени создания и модификации, вы можете сделать это с 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')
  • 0
    Спасибо за помощь.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню