Diskuze: Kontrola zavírání souboru

Člen

Zobrazeno 14 zpráv z 14.
K personalizaci obsahu a reklam, poskytování funkcí sociálních médií a analýze naší návštěvnosti využíváme soubory cookie. Informace o tom, jak náš web používáte, sdílíme se svými partnery pro sociální média, inzerci a analýzy. Partneři tyto údaje mohou zkombinovat s dalšími informacemi, které jste jim poskytli nebo které získali v důsledku toho, že používáte jejich služby.
Používáme nezbytné cookies pro fungování webu a s tvým souhlasem také analytické a marketingové cookies.
Zajišťují základní funkce, bezpečnost a služby, které sis vyžádal. Nelze je vypnout.
| Služba | Poskytovatel | Účel | Cookies a úložiště | Doba uložení |
|---|---|---|---|---|
| ITnetwork | ITnetwork | Provoz webu, relace, přihlášení a uložení nastavení cookies. | PHPSESSID, auth_token, sid, itn_consent_impression, __Host-itn_consent | Relace až 1 rok |
| Google Tag Manager | Správa značek a načítání měřicích nástrojů webu. | Žádné | Neukládá se | |
| Google Fonts | Načítání typografie webu. | Úložiště řízené poskytovatelem | Dle podmínek poskytovatele | |
| Google Hosted Libraries | Načítání potřebných knihoven a stylů webu. | Úložiště řízené poskytovatelem | Dle podmínek poskytovatele | |
| Google reCAPTCHA | Ochrana formulářů a webu před zneužitím. | _GRECAPTCHA, rc::a, rc::b, rc::c, rc::f | Relace až 180 dní | |
| YouTube | Přehrávání vloženého video obsahu. | localStorage, IndexedDB; cookies after playback interaction | Relace až trvalé úložiště | |
| Vimeo | Vimeo | Přehrávání vloženého video obsahu. | __cf_bm, _cfuvid, vuid, localStorage, IndexedDB | Relace až 2 roky |
| Facebook Login | Meta | Přihlášení pomocí účtu třetí strany. | Úložiště řízené poskytovatelem | Relace až 1 rok |
| GoPay | GoPay | Zpracování uživatelem vyžádané platby. | Úložiště řízené poskytovatelem | Dle podmínek poskytovatele |
Pomáhají nám porozumět používání webu a zlepšovat ho.
| Služba | Poskytovatel | Účel | Cookies a úložiště | Doba uložení |
|---|---|---|---|---|
| Google Analytics 4 | Měření návštěvnosti a používání webu. | _ga, _ga_* | Až 2 roky | |
| Microsoft Clarity | Microsoft | Měření návštěvnosti a používání webu. | _clck, _clsk, _cltk | Relace až 1 rok |
Slouží k měření kampaní, personalizaci reklamy a marketingové komunikaci.
| Služba | Poskytovatel | Účel | Cookies a úložiště | Doba uložení |
|---|---|---|---|---|
| Google Ads | Měření kampaní, reklama a remarketing. | _gcl_au, _gcl_ls | Relace až 90 dní | |
| Meta Pixel | Meta | Měření kampaní, reklama a remarketing. | _fbp, _fbc, localStorage | Až 90 dní |
| Sklik | Seznam.cz | Měření kampaní, reklama a remarketing. | retargeting, sid, szn:* | Relace až trvalé úložiště |
| LinkedIn Insight | Měření kampaní, reklama a remarketing. | bcookie, li_gc, lidc, __cf_bm | Relace až 1 rok | |
| Ecomail | Ecomail.cz | Měření kampaní, reklama a remarketing. | ecmid, Úložiště řízené poskytovatelem | Dle podmínek poskytovatele |
| Atribuce kampaní ITnetwork | ITnetwork | Přiřazení návštěvy a objednávky ke kampani. | campaign_clid[*], user_session_context | Až 1 rok |


Ahoj, nevím co myslíš tím "zda soubor nebyl zavřen klasickým křížkem ve Windows?" Myslíš zavření jiné aplikace, která má soubor otevřený?
Mimochodem měl by jsi sjednotit otevírání souborů.
Jen doplnim, ze "with open" drzi soubor otevreny az do konce bloku ... to je mozna odpoved na otazku pgarsky
Používáte dva způsoby, které jsou určeny na stejnou věc, rozdíl řekl Michal.
Doporučuju vždy používat
with open()
A jak je myšleno to sjednocení? Takhle?
#!/usr/bin/env python3
import os
import base64
f = "info.txt"
temp = "temp.txt"
if os.path.exists(f):
#create temporary file and open it
with open(temp, 'w') as temp:
info = open(f, 'r')
text = base64.b64decode(info.read()).decode('UTF-8')
#write text from info to temporary file
temp.write(text)
#open temporary file
tempFile = os.startfile("temp.txt")
#while ... is not closed ... write ... else ... encode and save to info (rewrite)
#delete temporary file
#<end script>
Ne. Ty používáš dvě konstrukce pro tu stejnou věc s tím že jenom atributem říkáš, že jeden soubor otevíráš pro čtení a druhý pro zápis (
open(f, 'r')
a
with open(temp, 'w')
). Pokud otevíráš soubor přes první konstrukci (open), tak by jsi celý ten kód měl volat v try-finally bloku, kde v části finally soubor uzavřes. Když použiješ druhou konstrukci (with open) tak blok try finally dělat nemusíš, protože se to děje automaticky.
Čili upravený kód by mohl vypadat např takto
#!/usr/bin/env python3
import os
import base64
f = "info.txt"
temp = "temp.txt"
if os.path.exists(f):
with open(f, 'r') as input:
text = base64.b64decode(input.read()).decode('UTF-8')
#create temporary file and open it
with open(temp, 'w') as temp:
#write text from info to temporary file
temp.write(text)
#open temporary file
tempFile = os.startfile("temp.txt")
#while ... is not closed ... write ... else ... encode and save to info (rewrite)
#delete temporary file
#<end script>
Případně bloky do sebe vhodně zanořit s ohledem na to co vlastně děláš, nebo co má výt výsledkem.
Snad to má hlavu, patu a pomohl jsem ti alespoň trochu.
Pozn. kód jsem upravoval v browseru, s největší pravděpodobností bude nevalidní ...
Děkuji. A jak tedy mohu kontrolovat, zda je otevřená aplikace, ve které jsem ten TXT soubor otevřel?
To přeci kontrolovat nemusíš ... nebo jsem možná nepochopil čeho chceš docílit, ale zatím z toho mám dojem že sám sobě trochu házíš klacky pod nohy.
Je nemluvím o otevření souboru pomocí open(), já myslím otevření souboru pomocí os.startfile()
Pockej, ted tomu asi nerozumim. Ty chces po systemu aby ti otevral soubor, ktery sam drzis pro zapis? A kontrolovat jestli je jeste otevreny?
Jestli jsem to pochopil spravne, tak se obavam se ze to takhle jednoduse neudelas ... a odpoved na to co se ptas se da zjistit do minuty mrknutim do dokumentace , kde se pise
startfile() returns as soon as the associated application is launched. There is no option to wait for the application to close, and no way to retrieve the application’s exit status.
A nějaká jiná možnost není? Třeba s použitím jiného příkazu, než startfile() ?
Muzes mi prosim nejak popsat (klidne SZ pokud se ti nechce sem) co od toho kodu vlastne chces a proc, treba nejake reseni najdeme.
Napsal jsem SZ, pokud najdeme řešení, postnu ho sem.
Zobrazeno 14 zpráv z 14.