WindowsやLinuxなどOSに依存することなく利用可能であるPythonを用いてダミーテキストを作成する方法を記載します.
目次
ダミーテキストファイルとは?
ダミーテキストファイルとは,ランダムで意味のない単語や文を含むテキストファイルのことです.主に,テキスト処理のテストやレイアウトの確認,パフォーマンステストなどに使用されます.
小さいサイズの場合はいくらでもサンプルを見つけることができますが,巨大なファイルはなかなか作るのが面倒です.
また,ファイルサイズを指定することで,パフォーマンステストにより役に立つでしょう.
ダミーテキストファイルの作成方法
ファイルサイズを厳密にする場合はf.truncate(file_size)
を使用します.
以下のサンプルコードでf.truncate(file_size)
をコメントアウトしています.厳密なファイルサイズを要求する場合コメントアウトを外してください.
以下例題では,1MBのダミーファイルを作成しています
意味のないランダムな文字を使う場合
main.py
import string
import random
def write_dummy_file(filename, file_size, char_per_line=10) -> None:
with open(filename, "w") as f:
while f.tell() < file_size:
line = ''.join(random.choices(string.ascii_letters +
string.digits, k=char_per_line)) + '\n'
f.write(line)
f.truncate(file_size)
def main():
write_dummy_file("dummy.txt", 1024*1024, 50)
if __name__ == "__main__":
main()
出力例
dummy.txt
if8zPIMefdZ5ggs2HonMncSXpxe72yYNUr39lQBAZztAnRBjvP
2q2ngRBEkAh3q1kzP9QPCF8eboheb0D64yzdY10yznaa8DpURH
Iq4Ke5k62EIU3eIjAoLD4zxZl6s4Ncgpidjko8OjuNZt0X5htk
6xkWAfjrxGLXJPifOeRR2N781QE8QZSFI5srFGWj4cbKasHcX3
3SdUB2cTaQ0m6xPcOXVhV2MP4LN0k47YspWc0VGom3Y5wYe3lt
bHJ5jwhqjC4YJUEqgQOhkDCZUjWQZVSv8J8P6pb0Ex07IWDR2u
y5QWbkVshAkYzTRzUZ3DoIael9zYmbomBY2ELHgz6NVAezxlLp
gWeagMy5LvvrMsQPxSw6cp3B5Gng290HWkP9mOJKeYZ86qVNdh
...
英単語を用いてダミーファイルを作成する場合
英単語を生成するためにnltk
(Natural Language Toolkit)ライブラリを使用します.
nltkのインストールはpipでインストール可能です.
pip install nltk
main.py
import nltk
import random
def write_dummy_file(filename, file_size, words_per_line=10) -> None:
nltk.download('words')
words = nltk.corpus.words.words()
with open(filename, "w") as f:
while f.tell() < file_size:
line = " ".join(random.sample(words, words_per_line)) + "\n"
f.write(line)
# f.truncate(file_size)
def main():
write_dummy_file("dummy.txt", 1024*1024, 10)
if __name__ == "__main__":
main()
出力例
dummy.txt
entangled thimblelike ploratory Hydrastis interambulacrum timbery cowhide unhelpfully quietus conventicler
hunchback electropyrometer infirmation pivot proangiosperm cheeker Eucalyptus thunderstorm unrestable sinfonie
colpus exostome brachydactylism gynecidal Virgularia opotherapy dinnerly intersectional Licuala sublegislation
helminthosporiose Brumalia Yellowknife warsaw ineptly roselite prequalification anarthropod sheristadar overtimorousness
protovanadium dispersoidology entranceway digs pickage stoush nuttiness lactam triluminous addebted
stallman bruising hedonistic unexportable lentisc anonymity unkiss sulcation tribuneship gangdom
driveboat bequest thumbstall cursiveness oxyurous Phalangides cushionlike sarsa spotlight recreate
...