Использование glob для получения файлов txt и png только из папки [duplicate]

По вопросу «что мне делать с этим» может быть много ответов.

Более «формальный» способ предотвращения таких ошибок при разработке применяя дизайн по контракту в вашем коде. Это означает, что при разработке вы должны установить инварианты класса и / или даже предпосылки для функции и .

Короче говоря, инварианты класса гарантируют, что в вашем классе будут некоторые ограничения, которые не будут нарушены при нормальном использовании (и, следовательно, класс будет not получить в несогласованном состоянии). Предпосылки означают, что данные, данные как входные данные для функции / метода, должны соответствовать установленным ограничениям и никогда не нарушать их, а постулаты означают, что вывод функции / метода должен соответствовать установленным ограничениям снова не нарушая их. Условия контракта никогда не должны нарушаться во время выполнения программы без ошибок, поэтому дизайн по контракту проверяется на практике в режиме отладки, а отключен в выпусках , чтобы максимизировать развитую производительность системы.

Таким образом, вы можете избежать случаев NullReferenceException, которые являются результатом нарушения установленных ограничений. Например, если вы используете свойство объекта X в классе, а затем попытаетесь вызвать один из его методов, а X имеет нулевое значение, то это приведет к NullReferenceException:

public X { get; set; }

public void InvokeX()
{
    X.DoSomething(); // if X value is null, you will get a NullReferenceException
}

Но если вы установите «свойство X никогда не должно иметь нулевого значения» в качестве предпосылки для метода, вы можете предотвратить описанный ранее сценарий:

//Using code contracts:
[ContractInvariantMethod]
protected void ObjectInvariant () 
{
    Contract.Invariant ( X != null );
    //...
}

По этой причине Код Контракт существует для приложений .NET.

В качестве альтернативы дизайн по контракту может быть применен с использованием утверждений .

ОБНОВЛЕНИЕ: Стоит отметить, что этот термин был придуман Бертраном Майером в связи с его дизайном языка программирования Эйфеля .

79
задан Raptrex 31 December 2010 в 07:39
поделиться

25 ответов

89
ответ дан Pat 25 August 2018 в 03:23
поделиться
2
ответ дан Andrew Alcock 25 August 2018 в 03:23
поделиться

с glob это невозможно. вы можете использовать только: * соответствует всем? соответствует любому символу [seq], соответствующему любому символу в seq [! seq], который соответствует любому символу, не содержащемуся в seq

, использовать os.listdir и regexp для проверки шаблонов:

for x in os.listdir('.'):
  if re.match('.*\.txt|.*\.sql', x):
    print x
13
ответ дан Christian 25 August 2018 в 03:23
поделиться

Один глобус, множество расширений ... но несовершенное решение (может совпадать с другими файлами).

filetypes = ['tif', 'jpg']

filetypes = zip(*[list(ft) for ft in filetypes])
filetypes = ["".join(ch) for ch in filetypes]
filetypes = ["[%s]" % ch for ch in filetypes]
filetypes = "".join(filetypes) + "*"
print(filetypes)
# => [tj][ip][fg]*

glob.glob("/path/to/*.%s" % filetypes)
0
ответ дан colllin 25 August 2018 в 03:23
поделиться
0
ответ дан cyht 25 August 2018 в 03:23
поделиться
4
ответ дан feqwix 25 August 2018 в 03:23
поделиться
1
ответ дан geisterfurz007 25 August 2018 в 03:23
поделиться
1
ответ дан Gil-Mor 25 August 2018 в 03:23
поделиться
3
ответ дан Hans Goldman 25 August 2018 в 03:23
поделиться
0
ответ дан Jayhello 25 August 2018 в 03:23
поделиться
-1
ответ дан jdnoon 25 August 2018 в 03:23
поделиться
2
ответ дан joemaller 25 August 2018 в 03:23
поделиться
0
ответ дан Justin 25 August 2018 в 03:23
поделиться
0
ответ дан Kjuly 25 August 2018 в 03:23
поделиться
1
ответ дан Laurent LAPORTE 25 August 2018 в 03:23
поделиться
0
ответ дан LK__ 25 August 2018 в 03:23
поделиться
17
ответ дан patrick-mooney 25 August 2018 в 03:23
поделиться
0
ответ дан Projesh Bhoumik 25 August 2018 в 03:23
поделиться
0
ответ дан Sarvagya Gupta 25 August 2018 в 03:23
поделиться
2
ответ дан scholer 25 August 2018 в 03:23
поделиться
2
ответ дан Tim Fuller 25 August 2018 в 03:23
поделиться
28
ответ дан tzot 25 August 2018 в 03:23
поделиться
0
ответ дан unpangloss 25 August 2018 в 03:23
поделиться
26
ответ дан user2363986 25 August 2018 в 03:23
поделиться
1
ответ дан Winand 25 August 2018 в 03:23
поделиться
Другие вопросы по тегам:

Похожие вопросы: