はじめに
Linux には md5sum というコマンドがあり、ファイルの md5 値を生成できます。通常、結果は検証用にファイルに記録されます。たとえば、
[crazyant@localhost PythonMd5]$ more sample_file www.crazyant.net www.51projob.com [crazyant@localhost PythonMd5]$ md5sum sample_file > sample_file.md5file [crazyant@localhost PythonMd5]$ more sample_file.md5file 311d384505e3622ccf85d88930e2b0a0 sample_file [crazyant@localhost PythonMd5]$ md5sum -c sample_file.md5file sample_file: OK
のように使用されます。 このうち、md5sum -c は、生成された md5 値が正しいかどうかを確認するために使用されます。
Python を使用してファイルの md5 値を生成し、md5sum の結果と同じ結果ファイルを生成します
Python は hashlib の md5 モジュールを使用して、ファイルの内容に対する md5 チェック コードを生成できます。md5sum と同じ結果ファイルを生成したい場合は、間に 2 つのスペースを入れて MD5 結果の値とファイル名を 1 行に出力するだけです。
テストコード:
# -*- encoding:utf-8 -*- from hashlib import md5 import os def generate_file_md5value(fpath): '''以文件路径作为参数,返回对文件md5后的值 ''' m = md5() # 需要使用二进制格式读取文件内容 a_file = open(fpath, 'rb') m.update(a_file.read()) a_file.close() return m.hexdigest() def generate_file_md5sumFile(fpath): fname = os.path.basename(fpath) fpath_md5 = "%s.md5" % fpath fout = open(fpath_md5, "w") fout.write("%s %s\n" % (generate_file_md5value(fpath), fname.strip())) print "generate success, fpath:%s" % fpath_md5 fout.flush() fout.close() if __name__ == "__main__": fpath = "/home/users/workbench/PythonMd5/sample_file" # 测试一:以文件路径作为参数,获得md5后的字符串 print generate_file_md5value(fpath) # 测试二:生成和linux命令:md5sum同样结果的.md5文件 generate_file_md5sumFile(fpath)
実行結果:
[crazyant@localhost PythonMd5]$ python generateMd5file.py 311d384505e3622ccf85d88930e2b0a0 generate success, fpath:/home/crazyant/workbench/PythonMd5/sample_file.md5 [crazyant@localhost PythonMd5]$ md5sum -c sample_file.md5 sample_file: OK
注目してください
Windows で開発されたコードを Linux に直接送信して実行すると、Windows では改行文字が rn であり、Linux では n であるため、コードの実行が失敗することがよくあります。一般に、変換が必要です。
まとめ
以上がこの記事の内容です。この記事の内容が皆さんの勉強や仕事に少しでもお役に立てれば幸いです。ご不明な点がございましたら、メッセージを残してご連絡ください。 PHP中国語ウェブサイトをご利用いただき誠にありがとうございます。
Python を使用してファイル md5 チェック値関数を生成する方法に関するその他の関連記事については、PHP 中国語 Web サイトに注目してください。