J.....L
J.....L
#python #naukaprogramowania możę ktoś będzie się orientował, chodzi o pobieranie pliku ZIP z url'a oraz rozpakowywaniu go i operacji na pliku w Pythonie. Tu jest kod :

https://pastebin.com/x26fP3iA

wykorzystany jest w nim generator. Orientuje się ktoś jak to działa i jak tego używać? Dzięki
  • Najlepsze
  • Wszystkie komentarze
l.....i
l.....i
@JungleJamPL:

for filename, zipfile in download_extract_zip(url): do_something_with(filename or zipfile)
mprzemo
mprzemo
@JungleJamPL: generator jest po to żeby nie zawalać niepotrzebnie pamięci.
J.....L
J.....L
@mprzemo: rozumiem, tylko jak 'odpalać' tą funkcję, pod względem składni. Innymi, słowy, co wpisać żeby iterować po plikach w zipie wewnątrz tej funkcji
J.....L
J.....L
przedewszystko chce się dosstać do tego pliku i go sparsować
J.....L
J.....L
@mprzemo: po prostu gdy wywołuję tą funkcję, i potem próbuję coś zrobić z danymi, to wg. Pythona operuję na objekcie "generator" , i nic z tym dalej nie moge zrobiic
mprzemo
mprzemo
@JungleJamPL: a no to wywal yield albo przypisz dane do jakiejś zmiennej.
J.....L
J.....L
@mprzemo: czyli jak to będzie miao wyglądąć ostatecznie ? po co jest ta linijka
with thezip.open(zipinfo) as thefile:

jak to napisać żeby poprostu móc zyskać dostęp do tego pliku i dalej go sobie przeczytać (docelowo jest to plik csv)
mprzemo
mprzemo
@JungleJamPL: ok na pewno będzie jeden plik w zipie?
J.....L
J.....L
@mprzemo: tzn. to tego konrketnego pliku będzie tylko jeden CSV . i chociaż interesuje mnie ta opcja z wieloma plikami i iterowanie po nich , tylko najpierw chciałbym odpalic dla jednego pliku, zeby sobie ruszyc dalej z projektem i nie zamulić
J.....L
J.....L
@mprzemo: a potem się wrócę i sforsuje inne opcje
J.....L
J.....L
@luzny_lori: dałem print(zipfile) i wyskoczyło :

'pliczek.csv' to ten do którego chce się dostać . ale wszelkie polecenia typu :
mprzemo
mprzemo
@JungleJamPL:
z = download_extract_zip(url)
a = next(z)[1]
teraz masz przypisany plik do zmiennej a, jak chcesz iść do kolejnego pliku w zipie to znów musisz użyć next().
l.....i
l.....i

'pliczek.csv' to ten do którego chce się dostać . ale wszelkie polecenia typu :

zipfile.open()


zipfile.read()

czy zipfile.readlines()

nie
J.....L
J.....L
@luzny_lori: nie tam daj spokój, ja się dopiero ucze na pewno gdzieś bład mi się popełniło
J.....L
J.....L
@mprzemo: a teraz ten plik pod zmienno "a" , on już jest rozpakowany czy musze go jeszcze raz zipfile.ZipFile rozpakowac ? bo w tym pliku ZIP był plik CSV , a mimo to gdy daje na niego type(a) to wychodzi:
mprzemo
mprzemo
@JungleJamPL: aż zrobię jakieś pliki testowe i Ci później napiszę.
J.....L
J.....L
@mprzemo: ok, bo tak jak proboje na tym pliku zrobić a.read() albo a.readlines() etc. to wyskakuje błąd:
a.readlines()
ValueError: I/O operation on closed file.

a jak daje type(a) to jest