Если PurePath.match (pattern) делает
Сопоставьте этот путь с предоставленным шаблоном glob-стиля.Вернуть True, если сопоставление прошло успешно, иначе False
и Path.glob (pattern) будет
Перетаскивать данный шаблон в каталог, представленный какэтот путь, в котором приводятся все совпадающие файлы (любого типа):
Вопрос-1
Тогда почему приведенное ниже утверждение не выполняется?
query_files = Path('../').glob("sql-queries/**/*.sql")
filtered_files = [fname for fname in query_files if fname.match("sql-queries/**/*.sql")]
assert query_files == filtered_files # This assertion fails?
Question-2
Как мы можем изменить шаблон PurePath.match
, чтобы убедиться, что утверждение не ошибается.
NB рекурсивный шаблон не может Path.match
файлы по базовому пути, которые сопоставляются и возвращаются Path.glob
.Похоже, это наблюдаемое несоответствие между двумя API.
QnA
Q: Можете ли вы привести пример конкретного пути, который появляется в файлах запроса, но не в файлах с фильтром?
A:
query_files = <class 'list'>: [
PosixPath('../sql-queries/combined_gv.sql'),
PosixPath('../sql-queries/gv_with_merchant.sql'),
PosixPath('../sql-queries/merchant_dimension.sql'),
PosixPath('../sql-queries/gen_test_data/combined_gv.sql'),
PosixPath('../sql-queries/gen_test_data/merchant_dimension.sql')]
filtered_files = <class 'list'>: [
PosixPath('../sql-queries/gen_test_data/combined_gv.sql'),
PosixPath('../sql-queries/gen_test_data/merchant_dimension.sql')]