16進数が記載されたテキストファイルをバイナリに変換(python)

経緯

wireshark等でキャプチャした16進数の値をバイナリに変換したい!と思って作ったスクリプト。
実行するとGUIでテキストを選択するダイアグラムが出るので、そこでテキストファイルを選択すると、同じディレクトリに.binとしてバイナリ化されたファイルが生成される。

スクリプト

python3.6.5で動作を確認。
選択したテキストファイルに
・16進数の値(0-Fまで)
・改行
・スペース
以外が入っているとエラーになるので注意。

import struct
from tkinter import filedialog
import os, tkinter, tkinter.filedialog, tkinter.messagebox

# ファイル選択ダイアログの表示
root = tkinter.Tk()
root.withdraw()
fTyp = [("","*")]
iDir = os.path.abspath(os.path.dirname(__file__))
tkinter.messagebox.showinfo('string2bin','処理ファイルを選択してください')
file = tkinter.filedialog.askopenfilename(filetypes = fTyp,initialdir = iDir)

print(file)

fin = open(file, 'r')
data = fin.read()
data = data.replace("\n","").replace(" ","")
bits = bytes.fromhex(data)

with open(file + str(".bin"), mode='wb') as f1:
    f1.write(bits)