Найти следующий файл в папке - PullRequest
0 голосов
/ 15 января 2020

мой способ получения имени следующего файла в папке просто ужасен, но работает. Я хотел бы отменить требование вызова функции os.listdir, так как она работает медленно в больших папках, но не знаю как. Любая помощь приветствуется.

Примечание: Fullpathtoimagefile - это старый файл. Changeimage - это имя функции, которая получает следующий файл

def nextfile(self):
    folder, filename = os.path.split(fullpathtoimagefile)
    filelist = os.listdir(folder)
    nextfile = filelist.index(filename) + 1
    nextfilename = filelist[nextfile]
    changeimage(os.path.join(folder, nextfilename))

tl; dr Более эффективный способ получить полное имя следующего файла в папке

Ответы [ 3 ]

0 голосов
/ 15 января 2020

простой код ..

import os

arq = (os.listdir(".")) # "." = directory name
for file in arq:
    print(file)

Другой пример:

import os

arq = (os.listdir("."))
for file in arq:
    if (os.path.splitext(file)[1] == ".jpg"): #if a JPG file, do something
        print(file)
0 голосов
/ 15 января 2020

Этот вид пахнет как экземпляр проблемы XY . Похоже, вы пытаетесь перебирать изображения в папке - в этом случае используйте модуль pathlib (он существует с Python 3.4):

from pathlib import Path

for path in Path("path/to/folder/with/images").glob("*.jpg"):
    print(path)
0 голосов
/ 15 января 2020

Может быть, вы можете работать с этим.


 [(os.path.join(folder, d), d, os.path.isdir(os.path.join(folder, d ))) for d in os.listdir(folder)]
...