Stati c case
Если предполагается, что список файлов «заморожен» (файлы не будут удалены / добавлены), тогда мы можем использовать 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'))))
Dynami c case
Если содержимое каталога может измениться, и мы хотим выполнить сканирование каталога на каждом попытка генерации данных может быть сделана как
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))
Edit