ein Skript soll eine textbasierte Datei öffnen, mit dem Inhalt eine ganze Menge herumarbeiten und dann die Ergebnisse in einer anderen ebenfalls textbasierten Datei abspeichern. Ich möchte, dass das Skript optional auch mit, mit gzip komprimierte Dateien, arbeiten kann. Wie kann ich meinen Code am besten anpassen, damit das klappt? Folgendes habe ich mir ausgedacht:
Code: Alles auswählen
import gzip
files_as_gzip = True
file_path_input = '/home/user/input.txt.gz'
file_path_output = '/home/user/output.txt'
file_path_output += '.gz' if files_as_gzip else ''
my_open_function = gzip.open if files_as_gzip else open
my_open_options_input = 'rt' if files_as_gzip else 'r'
my_open_options_output = 'wt' if files_as_gzip else 'w'
input = []
with my_open_function(file_path_input,my_open_options_input) as file:
for line in file:
input.append(line)
with my_open_function(file_path_output,my_open_options_output) as file:
for line in input:
file.write(line)
Alternativ könnte man halt das ganze Skript mit if/else Abzweigungen immer aufteilen in einen Pfad für gzip und einen für txt. Oder wenn gzip gewünscht ist erstmal den Inhalt in eine temporäre Datei entpacken und dann mit dieser Datei arbeiten und beim output andersherum erst in eine ungepackte temporäre Datei schreiben und dann am Ende die Datei komprimieren.
Würde mich freuen wenn mir jemand kurz sagen könnte wie man sowas am elegantesten löst. Vielen Dank.