błędne działanie instrukcji if

0

Witam,
piszę w pythonie mały programik operujący na plikach i mam dwa małe problemy.

  1. Chciałbym załadować do listy wszystkie pliki .jpg oraz .png znajdujące się w katalogu.
    Posiłkując się fragmentem znalezionym w internecie, mającym wyświetlać listę plików zawierającą dany ciąg znaków. Napisałem swój fragment ładujący wszystkie pliki o danym rozszerzeniu do listy i zastanawiam się czy mogę jakoś zrealizować to ładowanie plików .jpg oraz .png w jednym poleceniu czy muszę to rozbić na dwa osobne fragmenty.
    Próbowałem w ten sposób:
[zawartosc.append(x) for x in listdir('.') if \
 fnmatch.fnmatch(x, '*.jpg' or '*.png')]

Jednak gdy tak napiszę ładowane są tylko pliki .jpg.

  1. Mam mały problem z ifem. Nie mogę pojąc dlaczego nie działa on tak jak chcę by działa.
    Pliki zawierają w sobie numery które próbuję z nich wyciągnąć. Jednak
    gdy np. trafia się plik zawierający numer 57 to najpierw zmiennej minwar jest przypisywana wartość indeksu cyfry 5 ale później gdy pętla dochodzi do 7 to do minwar zostaje przypisana wartość indeksu cyfry 7. A przecież jeśli plik ma np. nazwę foto 57 wak.jpg to w tej nazwie 5 ma niższy indeks od 7 i to wartość indeksu cyfry 5 powinna być wpisana do minwar.
# -*- coding: utf-8 -*-
from os import *
import fnmatch

zawartosc = []
listaIndeksow = []

[zawartosc.append(x) for x in listdir('.') if \
 fnmatch.fnmatch(x, '*.jpg' or '*.png')]

for i in zawartosc:
    minwar = 999
    for j in range(10):
        # print i.find(str(j))
        print i
        print j
        if i.find(str(j))!= -1 and min > i.find(str(j)):
            print minwar
            minwar = i.find(str(j))
            print minwar

    listaIndeksow.append(i[minwar:minwar+2])
0

Bez żartów
1.

pliki = [file_name for file_name in listdir('.') if (file_name.endswith('png') or file_name.endswith('jpg')]

albo

pliki = filter(lambda file_name: file_name.endswith('png') or file_name.endswith('jpg'), listdir('.')))
  1. Nie rozumiem twojego pytania, ale to co robisz wydaje się bez sensu. Napisz co chcesz osiągnąć, bo na pewno próbujesz to osiągnąć bardzo złym sposobem...

1 użytkowników online, w tym zalogowanych: 0, gości: 1