Pypthon: Unterschied zwischen den Versionen
Martin (Diskussion | Beiträge) |
Martin (Diskussion | Beiträge) shebang for python |
||
| Zeile 1: | Zeile 1: | ||
[[Kategorie:Python]] | [[Kategorie:Python]] | ||
==Programme== | ==Programme== | ||
Shebang für Python-Programme: | |||
#!/usr/bin/env python3 | |||
===SHA256-Checksummen-Checker=== | ===SHA256-Checksummen-Checker=== | ||
Keine besondere Erfinderhöhe. Daher ohne Copyright, sondern Freeware. | Keine besondere Erfinderhöhe. Daher ohne Copyright, sondern Freeware. | ||
Version vom 5. Mai 2026, 10:22 Uhr
Programme
Shebang für Python-Programme:
#!/usr/bin/env python3
SHA256-Checksummen-Checker
Keine besondere Erfinderhöhe. Daher ohne Copyright, sondern Freeware.
Problem: Wenn man im Internet Dateien zum Download angeboten bekommt, kann man die Datenintegrität oft anhand eines angezeigten SHA256-Hashes überprüfen. Dazu existieren unter allen Betriebssystemen Shell-Tools, um den Hasch einer Datei zu berechnen.
Unter Linux:
sha256sum
Das Resultat kann man dann mit dem auf der Webseite vorgegebenen Hash-String vergleichen. Das finde ich eher mühsam; warum kann man den Hash nicht gleich mit prüfen? Für GTK gibt es diverse Tools und einige können auch die Vorgabe gleich mit prüfen. GTK finde ich aber übertrieben. Das kann gern in der Konsole laufen.
Die schafft mein kleines Progrämmchen shc.py (sha256-check):
#!/usr/bin/env python3
import hashlib
import sys
version = '\nSHA256-Checker version 0.1 Free and open source software\n'
helptext = "Help: run parameters are: filename expected-sha256-string\n"
txt_color_gn = "\033[0;32m" # green colored text
txt_color_rd = "\033[0;31m" # red colored text
txt_color_wt = "\033[0;0m" # white colored text (default)
def calculate_sha256(filename, chunk_size=65536):
sha256 = hashlib.sha256()
with open(filename, 'rb') as f:
while True:
data = f.read(chunk_size)
if not data:
break
sha256.update(data)
return sha256.hexdigest()
# probe reading parameters
try:
filename = sys.argv[1]
hashvalue= sys.argv[2]
except IndexError:
# in case of index error, print helpstring and exit
print(version, "\n", helptext, sep='') # sep='' prevents leading space in output line
sys.exit() # program ends here
hashresult=calculate_sha256(filename)
if hashresult== hashvalue:
print(version, txt_color_gn, "\nCheck OK:" ,hashresult) # output text in green
else:
print(version, txt_color_rd, "\nCheck fail! Calculated result:\n", hashresult, sep='') # output text in red
print(txt_color_wt, "\nDone.\n") # regular end of program
Ein Start ohne Parameter zeigt an, welche Parameter nötig sind und bricht dann ab:
- Parameter: zu prüfende Datei
- Parameter: erwarteter sha256-String
Vor Anwendung unter Linux:
chmod +x shc.py
Um es ausführbar zu machen.