ITBlog

IT Blog w tematach różnych...

  • O blogu…
  • Edukacja
    • Moodle – stare
    • Moodle2
    • Testy
    • Wykłady IT
  • Firma

Generator plików tekstowych i binarnych

Napisane przez Igor Brzeżek on 16 czerwca 2026
Napisane w: Programowanie.

Contents
  1. genfiles – generator plików testowych i struktury katalogów
  2. Do czego służy genfiles?
  3. Jak to działa – mechanizm wewnętrzny
  4. Wymagania
  5. Instalacja i uruchomienie
  6. Opcje wiersza poleceń – szczegółowy opis
  7. Tryb prosty (–file-create)
  8. Tryb strukturalny (domyślny)
  9. Statystyki (–stat)
  10. Przykłady użycia
  11. 1. Tryb prosty – 10 plików po 256 KB
  12. 2. Tryb strukturalny – 5 podkatalogów, max 8 plików, max 1024 KB, mieszane typy
  13. 3. Tylko pliki binarne, 12 podkatalogów, max 4 pliki, max 128 KB
  14. 4. Tylko pliki tekstowe, 3 podkatalogi, max 12 plików, max 64 KB
  15. 5. Szybkie generowanie dużej struktury do testów wydajnościowych
  16. Konwencje nazewnicze
  17. Szczegóły implementacyjne
  18. Podsumowanie

genfiles – generator plików testowych i struktury katalogów

genfiles to lekkie narzędzie konsolowe (CLI) służące do generowania plików testowych oraz struktury katalogów. Narzędzie zostało napisane w Pythonie 3.8+ i nie wymaga żadnych zewnętrznych bibliotek, dzięki czemu jest w pełni przenośne – działa na systemach Linux, macOS i Windows.

GitHub: github.com/IgorBrzezek/genfiles

Do czego służy genfiles?

genfiles rozwiązuje problem ręcznego tworzenia danych testowych. Zamiast mozolnie przygotowywać pliki i katalogi, można za jednym poleceniem wygenerować dowolną strukturę. Narzędzie przydaje się w wielu scenariuszach:

  • Testy wydajnościowe – generowanie danych do testowania przepustowości dysków, systemów plików lub sieci.
  • Ćwiczenia ze storage’em – przygotowywanie realistycznych zestawów danych do testów rozwiązań do przechowywania danych.
  • Środowiska demo – szybkie tworzenie struktury katalogów i plików na potrzeby prezentacji.
  • Materiały dydaktyczne – generowanie przykładowych danych do ćwiczeń dla studentów i uczniów.
  • Testy skanerów AV i archiwizatorów – losowe pliki binarne i tekstowe do testowania programów antywirusowych i archiwizujących.

Jak to działa – mechanizm wewnętrzny

genfiles opiera się na module argparse do obsługi argumentów wiersza poleceń i czystym Pythonie bez zewnętrznych zależności. Program działa w dwóch trybach:

  1. Tryb prosty (przełącznik --file-create) – tworzy określoną liczbę plików binarnych o stałym rozmiarze w katalogu głównym.
  2. Tryb strukturalny (domyślny) – tworzy drzewo podkatalogów z losową liczbą plików o losowych rozmiarach i typach.

W trybie strukturalnym każdy plik ma minimalny rozmiar 100 bajtów (stała min_size_bytes), a maksymalny wynika z parametru -k pomnożonego przez 1024. Pliki binarne wypełniane są danymi z os.urandom(), natomiast tekstowe – losowym ciągiem znaków ASCII (litery, cyfry, białe znaki).

Wymagania

  • Python 3.8 lub nowszy
  • Brak zewnętrznych bibliotek – wszystko działa na standardowej bibliotece Pythona
  • System operacyjny: Linux, macOS lub Windows

Instalacja i uruchomienie

Ponieważ genfiles to pojedynczy plik źródłowy, instalacja sprowadza się do pobrania skryptu:

git clone https://github.com/IgorBrzezek/genfiles.git
cd genfiles
python genfiles.py --help

Alternatywnie można pobrać tylko plik genfiles.py i uruchamiać go bezpośrednio.

Opcje wiersza poleceń – szczegółowy opis

Opcja Opis Domyślnie
-d KATALOG Nazwa katalogu głównego do utworzenia wymagane
-fc N M Tryb prosty: utwórz N plików binarnych, każdy o rozmiarze M KB –
-n N Tryb strukturalny: liczba podkatalogów do utworzenia –
-m N Maksymalna liczba plików (1..N) w każdym podkatalogu –
-k N Maksymalny rozmiar pliku w KB –
--bin Tylko pliki binarne mieszane
--txt Tylko pliki tekstowe mieszane
--mix Mieszanka binarnych i tekstowych (~50/50) tak
--stat Wyświetl statystyki po wygenerowaniu –
-h, --help Pokaż pomoc –

Tryb prosty (–file-create)

W tym trybie program ignoruje opcje -n, -m, -k, --bin, --txt, --mix. Tworzy dokładnie N plików binarnych o jednakowym rozmiarze M KB w katalogu głównym. Pliki nazywane są według schematu fixed_file_001.bin, fixed_file_002.bin itd.

Tryb strukturalny (domyślny)

Tworzy N podkatalogów o nazwach subdir_001, subdir_002 itd. W każdym podkatalogu generuje losowo od 1 do M plików o losowym rozmiarze od 100 bajtów do K*1024 bajtów. Typ pliku (binarny/tekstowy) zależy od wybranego trybu: --bin, --txt lub --mix (domyślnie ~50/50).

Statystyki (–stat)

Po zakończeniu generowania opcja --stat wyświetla podsumowanie: liczbę utworzonych katalogów, plików, łączny rozmiar, średni rozmiar pliku oraz inne szczegóły.

Przykłady użycia

1. Tryb prosty – 10 plików po 256 KB

python genfiles.py -d ./lab/data --file-create 10 256 --stat

Efekt:

./lab/data/
  fixed_file_001.bin (256 KB)
  fixed_file_002.bin (256 KB)
  ...
  fixed_file_010.bin (256 KB)

2. Tryb strukturalny – 5 podkatalogów, max 8 plików, max 1024 KB, mieszane typy

python genfiles.py -d ./dataset -n 5 -m 8 -k 1024 --mix --stat

Efekt:

./dataset/
  subdir_001/
    file_001.bin (losowy rozmiar)
    file_002.txt (losowy rozmiar)
    ...
  subdir_002/
    ...

3. Tylko pliki binarne, 12 podkatalogów, max 4 pliki, max 128 KB

python genfiles.py -d ./workload -n 12 -m 4 -k 128 --bin

4. Tylko pliki tekstowe, 3 podkatalogi, max 12 plików, max 64 KB

python genfiles.py -d ./corpus -n 3 -m 12 -k 64 --txt --stat

5. Szybkie generowanie dużej struktury do testów wydajnościowych

python genfiles.py -d ./bench -n 50 -m 20 -k 512 --bin --stat

Tworzy 50 podkatalogów, w każdym do 20 plików binarnych o maksymalnym rozmiarze 512 KB – łącznie nawet do 1000 plików.

Konwencje nazewnicze

Tryb Schemat nazewnictwa Przykład
Prosty fixed_file_NNN.bin fixed_file_001.bin
Strukturalny (katalogi) subdir_NNN/ subdir_005/
Strukturalny (pliki) file_NNN.bin lub file_NNN.txt file_042.txt

Szczegóły implementacyjne

Wewnętrznie genfiles składa się z kilku kluczowych funkcji:

  • generate_random_data(size_bytes, is_binary) – generuje losową zawartość pliku: dla binarnych os.urandom(), dla tekstowych ASCII (litery, cyfry, białe znaki).
  • create_files_simple(root_dir, num_files, size_kb) – tworzy N plików binarnych o ustalonym rozmiarze w katalogu głównym.
  • create_structured_files(root_dir, N, M, K, file_type) – tworzy strukturalne drzewo katalogów z plikami.
  • print_simple_statistics(stats) i print_structured_statistics(stats) – wyświetlają podsumowanie.

Kod jest pisany z użyciem type hints, co ułatwia jego czytanie i rozwijanie. Wersja programu to 1.0.2 (grudzień 2025).

Podsumowanie

genfiles to proste, ale solidne narzędzie do generowania syntetycznych danych testowych. Dzięki dwóm trybom pracy (prostemu i strukturalnemu), wsparciu dla plików binarnych i tekstowych oraz opcjonalnym statystykom, sprawdza się zarówno w codziennej pracy developera, jak i w zautomatyzowanych procesach testowych. Brak zewnętrznych bibliotek i przenośność między platformami czyni go wygodnym wyborem dla każdego, kto potrzebuje szybko przygotować zestaw danych testowych.

Źródła: github.com/IgorBrzezek/genfiles

Nawigacja

← Test DNS dla Pi-Hole i AdGuard
Generator modulacji AM i FM →
  • Szukaj

  • Kategorie

    • IT ogólnie (147)
      • Bezpieczeństwo (19)
        • Model AAA (7)
        • Szyfrowanie (1)
      • CCTV (3)
      • Hardware (2)
      • Podstawy informatyki (1)
      • Sieci (35)
        • Cisco (4)
          • Obsługa haseł (2)
        • MikroTik (8)
        • Pomiary w sieciach LAN (6)
          • iptraf-ng (3)
        • Protokół ARP (5)
        • Symulator sieci GNS3 (3)
        • WLAN / WiFi (5)
      • Software (78)
        • Bazy danych (13)
        • Programowanie (21)
        • Systemy operacyjne (21)
          • Linux Debian (18)
        • Windows (8)
      • WiFi (2)
      • Wirtualizacja (26)
  • Ostatnie wpisy

    • WinScreen czyli terminal z wirtualnymi oknami
    • Style Mover czyli przenoszenie stylów HTML
    • Generator obrazów AI za pomocą API
    • Generator modulacji AM i FM
    • Generator plików tekstowych i binarnych
  • Strona odwiedzona

    od 11.01.2013

  • Doskonała platforma e-learningowa Uzyskaj certyfikat IT

Proudly powered by WordPress Theme: Parament by Automattic.
7ads6x98y