Unzippen in Unterordner

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
stef94
User
Beiträge: 3
Registriert: Dienstag 16. Februar 2021, 08:26

Ich habe einen Ordner mit über 700 Unterordnern. In jedem Unterordner befinden sich *.json.gz Dateien, die ich unzippen und als .txt abspeichern möchte. Mit dem folgenden Code kann ich die .gz Dateien unzippen:

import os
import gzip
import shutil

search_path = os.getcwd()
file_type = ".gz"
for fname in os.listdir(path=search_path):
if fname.endswith(file_type):
with gzip.open(fname,'rb') as f_in:
with open(fname+'.txt','wb') as f_out:
shutil.copyfileobj(f_in,f_out)

Wie kann ich nun den Code anpassen, dass er die .gz Dateien in allen Unterordnern unzipped?
Vielen Dank für die Hilfe!
Benutzeravatar
sparrow
User
Beiträge: 4193
Registriert: Freitag 17. April 2009, 10:28

Für alles, was mit Pfaden zu tun hat, nimmt man pathlib. Pfade haben eine sehr hilfreiche glob-Methode.
Benutzeravatar
__blackjack__
User
Beiträge: 13110
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@stef94: Warum änderst Du die Endung in *.txt statt *.json?
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
stef94
User
Beiträge: 3
Registriert: Dienstag 16. Februar 2021, 08:26

@_blackjack_: Das war nur zum testen. Ich werde das File schon im JSON behalten um dann ins pandas zu importieren.
Aber kannst du mir sagen, wie ich auf alle Unterordner zugreifen kann?
Benutzeravatar
__blackjack__
User
Beiträge: 13110
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@stef94: Mit der `pathlib.Path.glob()`-Methode, wie sparrow schon geschrieben hat.
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
Sirius3
User
Beiträge: 17750
Registriert: Sonntag 21. Oktober 2012, 17:20

Wenn du es mit Pandas weiter verarbeiten willst, warum entpackst Du die Dateien dann erst?
stef94
User
Beiträge: 3
Registriert: Dienstag 16. Februar 2021, 08:26

@Sirius3: Ich dachte, ich muss die .gz Dateien zuerst entpacken, um dann mit pandas arbeiten zu können?
Schlussendlich möchte ich alle JSON Dateien in einem pandas Dataframe haben um dann Machine Learning anwenden zu können.
Kann ich direkt die -gz Files aus den Unterordnern in pandas ziehen?
Benutzeravatar
ThomasL
User
Beiträge: 1366
Registriert: Montag 14. Mai 2018, 14:44
Wohnort: Kreis Unna NRW

stef94 hat geschrieben: Dienstag 16. Februar 2021, 14:59 Kann ich direkt die -gz Files aus den Unterordnern in pandas ziehen?
Nicht fragen, sondern selber hier schauen
https://pandas.pydata.org/pandas-docs/s ... d_csv.html

Beispiel:

Code: Alles auswählen

df = pd.read_csv('sample.tar.gz', compression='gzip')
Ich bin Pazifist und greife niemanden an, auch nicht mit Worten.
Für alle meine Code Beispiele gilt: "There is always a better way."
https://projecteuler.net/profile/Brotherluii.png
Antworten