Flask, uprava souboru – Python – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu
Reklama

Flask, uprava souboru – Python – Fórum – Programujte.comFlask, uprava souboru – Python – Fórum – Programujte.com

 

Hledá se programátor! Plat 1 800 € + bonusy (firma Boxmol.com)
Jirka
~ Anonymní uživatel
292 příspěvků
10. 7. 2017   #1
-
0
-

Ahojte, python (a obecně programátorský) začátečník tady, snažím se o parsování obsahu souboru který se nahrává přes html form ve Flask appce, rád bych ten obsah prošel a upravil v čase mezi načtením souboru a jeho uložením, konkrétně

f = request.files['file']
#tady provest parsovani obsahu souboru..
#a ulozit
f.save()

Ta "věc" f je typu FileStorage, když se do toho pokusím zapsat .write(), nebo to například přečtu .read(), nebo to projdu cyklem v enumerate(f) tak každou ze zmíněnejch akcí dojde k vymazání dotčených dat z výslednýho souboru co se nahraje..

Mohl by mi prosím někdo objasnit o co se jedná? Snažil jsem se tomu sám přijít na kloub, ale je to pro mě dost neprůhledný.. Je mi tak nějak jasný že ta odpověď bude v nějaké obecné pythoní komponentě, magický slovo bude zřejmě stream, ale co konkrétně kolem toho potřebuji netuším

díky a budu rád za jakýkoli podnět

Nahlásit jako SPAM
IP: 89.177.101.–
Reklama
Reklama
gna
~ Anonymní uživatel
337 příspěvků
10. 7. 2017   #2
-
0
-

Ukládá se to od aktuální pozice, takže když ten stream celý načteš, nebo přepíšeš, tak jsi na konci a už není co ukládat. Nevím, jestli Flask zaručuje, že ten stream bude writable a seekable. Pokud ano, tak se můžeš posunout zpátky na začátek pomocí funkce seek. Raději bych to testoval nebo editoval až po uložení.

Nahlásit jako SPAM
IP: 213.211.51.–
Jirka
~ Anonymní uživatel
292 příspěvků
10. 7. 2017   #3
-
0
-

#2 gna

Díky moc za zprávu, už si s tím hraju

Nahlásit jako SPAM
IP: 89.177.101.–
Jirka
~ Anonymní uživatel
292 příspěvků
11. 7. 2017   #4
-
0
-

lze to tedy takto..

import StringIO

f = request.files['file']
s = StringIO.StringIO(f.stream.read())
lineLen=0

for line in s:
	f.stream.seek(lineLen)
	#jakakoliv logika s line
	lineLen+=len(line))

f.stream.seek(0)
f.save()
Nahlásit jako SPAM
IP: 89.177.101.–
Zjistit počet nových příspěvků

Přidej příspěvek

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 21 hostů

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032017 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý