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 (158)
      • AI (1)
      • Bezpieczeństwo (20)
        • Model AAA (7)
        • Szyfrowanie (1)
      • CCTV (3)
      • Hardware (2)
      • Podstawy informatyki (1)
      • Sieci (47)
        • Cisco (4)
          • Obsługa haseł (2)
        • MikroTik (8)
        • Monitorowanie sieci (3)
        • Pomiary w sieciach LAN (6)
          • iptraf-ng (3)
        • Protokół ARP (5)
        • Symulator sieci GNS3 (5)
        • Tunelowanie ruchu (6)
          • Tunele GRE (2)
          • Tunele SSH (4)
        • WLAN / WiFi (7)
      • Software (78)
        • Bazy danych (13)
        • Programowanie (21)
        • Systemy operacyjne (21)
          • Linux Debian (18)
        • Windows (8)
      • Wirtualizacja (26)
  • Ostatnie wpisy

    • Opencode – darmowe kredyty
    • Tunel SSH – zwrotny (remote forwading)
    • GNS3 – Interfejsy sieciowe
    • GNS3 – Konfiguracja urządzenia IOU (L2/L3)
    • Tunel GRE + EoIP na Cisco
  • Strona odwiedzona

    od 11.01.2013

  • Doskonała platforma e-learningowa Uzyskaj certyfikat IT

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

Powered by
Necessary cookies enable essential site features like secure log-ins and consent preference adjustments. They do not store personal data.
None
Functional cookies support features like content sharing on social media, collecting feedback, and enabling third-party tools.
None
Analytical cookies track visitor interactions, providing insights on metrics like visitor count, bounce rate, and traffic sources.
None
Advertisement cookies deliver personalized ads based on your previous visits and analyze the effectiveness of ad campaigns.
None
Unclassified cookies are cookies that we are in the process of classifying, together with the providers of individual cookies.
None
Powered by