ファイルのMD5ハッシュを作成するファイルの MD5 ハッシュを作成するユーティリティを作成したいと考えています。目的は、後でファイルの整合性 (変更されていないこと) を確認するためにハッシュを使用することです。私が思いついた基本的なスクリプトは次のとおりです。これは、私が達成したいタスクに対して合理的かつ適切でしょうか?
/*
JMP JSL script to open data file as BLOB and calculate MD5 Hash
*/
Names Default To Here( 1 );
// substitute in your directory path and filename as strings below
dirpath = "";
// filename
filename = "";
//load file as text file Blob, and calculate the hexadecimal MD5 Hash
Char To Hex( Blob To Char( Blob MD5( Load Text File( dirpath || filename, blob ) ) ) );
/*
End script
*/
macOSマスカスタマイゼーションウィンドウズRe: ファイルの MD5 ハッシュを作成する私も、そのようなチェックをしたときに似たようなものを使用したことがあると思います (それ以来、そのようなファイルをバージョン管理に移動し、正しいファイルが使用されていることを確認するために使用しています)。
JMPテーブルの場合、「内部」<< Checksum()メッセージもあります

私はこれを「プレビュー データ テーブル」クラスで使用してテストしましたが、問題なく動作するようです。「内部使用のみ」のため、どの程度堅牢になるかはわかりません。
Re: ファイルの MD5 ハッシュを作成する@jthi さん、ありがとうございます。そのデータ テーブル メッセージはバージョン 18 で新しく追加されたようです。JMP データ テーブルで機能します。私が必要としているのは、より汎用的で、あらゆるタイプのファイル (.JMP、.JMPADDIN、.JMPXXXXX、.DOCX、.XLSX、.TXT など) で機能する機能です。
Re: ファイルの MD5 ハッシュを作成する@Craige_Halesがこれを称賛してくれたのなら、私は正しい方向に進んでいるに違いありません!
Re: ファイルの MD5 ハッシュを作成するまたはPythonのhashlibを使うこともできます
import jmp
import sys, os, hashlib
from pathlib import Path
# Function to open a file and compute it's checksum
def file_cksum(a_filename):
digest = hashlib.md5()
try:
f = open(a_filename, 'rb') # open in binary mode
while True:
t = f.read(8192)
if len(t) == 0: break; # end of file
digest.update(t)
except:
print('file_cksum: Unexpected error: ', sys.exc_info()[0])
else:
f.close()
return digest.hexdigest()
jmp.run_jsl('''
local_path = Pick File("Chose File to checksum");
// Pick Directory on windows returns a leading / use Convert File Path()
If( Host is("Windows"),
local_path = Convert File Path( local_path, windows )
);
Python Send(local_path);
''')
print(local_path)
cksum = file_cksum(local_path)
print(f'MD5 {local_path}: {cksum}')
JSL Pick File()を使用して、ファイルmd5_file.pyに保存された上記のコードを選択しました。
結果は以下のとおりです。
/Users/_me_/Scripts/md5_file.py
MD5 /Users/_me_/Scripts/md5_file.py: d175790247060d7e415516794660216f