はじめに
大学の課題が終わらない。そんなことありますよね?
そんな時に役立つツールを開発しました。
(ジョークアプリです。このアプリの使用により起きたトラブルに当方は一切責任を負いません。)
概要
拡張子、ファイルサイズ、ファイル名を指定することで、あたかも提出する際に壊れてしまったかの様なファイルを作成します。締め切りに間に合わなくてもとりあえず出したという既成事実を得られるのではないでしょうか?
そんなコードを紹介します。
まずは雛形であるmain関数を作成し、そこから文字化け作成用の関数をimportすることで動作する仕組みです。
import os.path
import mojibake as moji
def main(func):
file_name = input("ファイル名を入力してください:")
ext = input("拡張子を入力してください:")
size = float(input("ファイルサイズを入力してください(MB):"))
size *= 1024 ** 2
file_size = 0
while(size > file_size):
file = file_name + '.' + ext
f = open(file, "a")
f.write(func)
f.write('\n')
file_size = os.path.getsize(file)
f.close()
if __name__ == '__main__':
main(moji.yabainari)
これは、importした関数に引数を与えるだけのプログラムなので文字化けアルゴリズムであるパッケージは自分で用意する必要があります。mainにあたえる引数を変えてお楽しみください。
文字化けアルゴリズムの作成例を2つ書きました。
例1
ダイバージェンス1%の向こう側へいけずに、課題提出できなかった人がお使いください。
def suzuha(size, file):
s = '失敗した' # 任意の文字列
s_size = 18 # 文字列のbyte数
with open(file, 'w', encoding='utf-8') as f:
i = 0
while size > i:
f.write(s)
i += s_size
else:
f.write('わたしは失敗した') # 任意の文字列にするときはelse文をコメントアウト
このコードの出力結果をテキストエディタで見てみましょう。
最後だけ処理を変えているため、多少ファイルサイズは変わります。大まかなサイズがあっていればよいでしょう。
pdfビューアで開くとこんな感じです。
バッチリ壊れてます。
メモ帳で開かれたら失敗したどころではなくいろいろと終わります。
任意の文字列とそのサイズに書き換えることで好きな言葉でファイルを埋められますが、教授への悪口などは絶対にやめましょう。
例2
例1では文字化けと言うより、テキストファイルを拡張子を変えて開くことで、あたかも壊れているかのように見せるコードでした。例2ではよりリアルな文字化けを引き起こすプログラムを作成しました。そんなコードがこちらです!
def yabainari(size, file):
import struct, random
with open(file, 'wb') as f:
for i in range(0, int(size)):
f.write(struct.pack('B', random.randint(0, 255)))
ランダムなbit列を作成して、バイナリモードで書き込むことで文字化けを引き起こします。
実際に出力結果をテキストエディタで見てみましょう。
完璧ですね。もちろんpdfビューアでも開けません。
まとめ
こんなコード書いてる暇があったら、課題にとりかかりましょう。
今回のコードはgithubにものせています -> https://github.com/yoh333/broken_maker
最後に一言…
課題は期限内に!(戒め)