Статический случай
Если предполагается, что список файлов "заморожен" (файлы не будут удалены/добавлены), то мы можем использовать os.listdir
+ hypohtesis.strategies.sampled_from
а> нравится
import os
from hypothesis import strategies
directory_path = 'path/to/directory/with/txt/files'
txt_files_names = strategies.sampled_from(sorted(os.listdir(directory_path)))
или если нам нужны полные пути
from functools import partial
...
txt_files_paths = (strategies.sampled_from(sorted(os.listdir(directory_path)))
.map(partial(os.path.join, directory_path)))
или если в каталоге могут быть файлы с разными расширениями, а нам нужны только файлы .txt, мы можем использовать glob.glob
import glob
...
txt_files_paths = strategies.sampled_from(sorted(glob.glob(os.path.join(directory_path, '*.txt'))))
Динамический случай
Если содержимое каталога может измениться, и мы хотим выполнять сканирование каталога при каждой попытке генерации данных, это можно сделать следующим образом:
dynamic_txt_files_names = (strategies.builds(os.listdir,
strategies.just(directory_path))
.map(sorted)
.flatmap(strategies.sampled_from))
или с полными путями
dynamic_txt_files_paths = (strategies.builds(os.listdir,
strategies.just(directory_path))
.map(sorted)
.flatmap(strategies.sampled_from)
.map(partial(os.path.join, directory_path)))
или с glob.glob
dynamic_txt_files_paths = (strategies.builds(glob.glob,
strategies.just(os.path.join(
directory_path,
'*.txt')))
.map(sorted)
.flatmap(strategies.sampled_from))
Редактировать
person
Azat Ibrakov
schedule
17.02.2020