ダミーファイルを生成するfaker-fileを使ってみた

ダミーファイルを生成するfake-fileを試してみました

はじめに

データアナリティクス事業本部のおざわです。

先日、ちょっと奮発してBody By Ringsという吊り輪を使った筋トレプログラムを購入しました。使うのは吊り輪と自分の体重だけですが、いままで味わったことがないほどの筋肉痛を体験できてオススメです。

今回は、以前ブログ記事にしたダミーデータを生成するFakerを利用して、PDF、MP3、XLSX、ZIP、JPEGなどテスト用に様々なダミーファイルを生成できるfaker-fileをご紹介します。てっとり早く動きを見たい方は、開発者の方が用意しているデモをご覧ください。

サポートされているファイル形式

現在、以下22のファイル形式がサポートされています。

BIN、CSV、DOCX、EML、EPUB、ICO、JPEG、MP3、ODS、ODT、ODP、PDF、PNG、RTF、PPTX、SVG、TAR、TXT、WEBP、XLSX、XML、ZIP

使い方

最初にpip installします。 READMEに各サポート形式のインストール方法が記載されています。

# Only core
pip install 'faker-file'
# WIth all dependencies
pip install 'faker-file[all]'

基本的な使い方は公式ドキュメントのRecipesに記載されており、いくつか手元の環境でも試してみました。プログラムと同じ階層にtmpディレクトリを作成して下の各プログラムを実行するとtmpの下にダミーファイルが生成されます。

また、私の環境(Mac OS)では、PDFと画像生成の前にwkhtmltopdfをインストールする必要がありました。

brew install wkhtmltopdf

PDF

Fakerにlocaleを指定するとaddress,cityなどは日本語でそれらしいダミーテキストが挿入されます。 text部分はランダムな単語になりますので、文章としては意味不明なものになります。

from faker import Faker
from faker_file.providers.pdf_file import PdfFileProvider
from faker_file.storages.filesystem import FileSystemStorage

FS_STORAGE = FileSystemStorage(root_path="./")
FAKER = Faker("ja-JP")

TEMPLATE = """
{{date}} {{city}}, {{country}}

こんにちは {{name}} 様

{{text}} {{text}} {{text}}

{{text}} {{text}} {{text}}

{{text}} {{text}} {{text}}

住所: {{address}}

よろしくお願い致します。

{{name}}
{{address}}
{{phone_number}}
"""

file = PdfFileProvider(FAKER).pdf_file(
    storage=FS_STORAGE, content=TEMPLATE, wrap_chars_after=80
)

# pathを表示
print(file)

DOCX

WordやExcelの文書にも対応しています。

from faker import Faker
from faker_file.providers.docx_file import DocxFileProvider
from faker_file.storages.filesystem import FileSystemStorage

FS_STORAGE = FileSystemStorage(root_path="./")
FAKER = Faker("ja-JP")

file = DocxFileProvider(FAKER).docx_file(
    storage=FS_STORAGE,
    prefix="zzz",
    max_nb_chars=1_024,
    wrap_chars_after=80,
)

print(file)

JPEG

ランダムな文字列が入っている画像が生成されます。

from faker_file.providers.jpeg_file import JpegFileProvider
from faker import Faker
from faker_file.storages.filesystem import FileSystemStorage

FS_STORAGE = FileSystemStorage(root_path="./")

FAKER = Faker("ja-JP")
file = JpegFileProvider(FAKER).jpeg_file(storage=FS_STORAGE)

print(file)

MP3

MP3ファイルも生成してくれます。他と同じく意味不明な単語の羅列ですが、音声になるとかなり不気味なものがあります。気になる方は試してみてください。

from faker import Faker
from faker_file.providers.mp3_file import Mp3FileProvider
from faker_file.providers.mp3_file.generators.gtts_generator import (
    GttsMp3Generator,
)
from faker_file.storages.filesystem import FileSystemStorage

FS_STORAGE = FileSystemStorage(root_path="./")
FAKER = Faker("ja-JP")

file = Mp3FileProvider(FAKER).mp3_file(
    storage=FS_STORAGE,
    mp3_generator_cls=GttsMp3Generator,
    mp3_generator_kwargs={
        "lang": "ja",
    },
)

print(file)

おわりに

以上、ダミーファイルを生成するfake-fileを試してみました。テストで大量のダミーファイルが必要なときに使えそうですね。

参考リンク