>> To znamená, že to může mít co do činění s použitím vyrovnávacího >> bufferu, který může být v Linuxu a pod Windows obsluhován jinak > >Takze to znamena, ze Windowsi fread() "obsahuje" buffer overflow? OK, >chapu, nemusi to byt chyba pythonu, ale v takovem pripade to je snad >jeste horsi.
Je to asi chyba v Pythonu, protože Python by neměl takovou situaci dovolit. Dokumentace ale svým způsobem na tento nedodělek upozorňuje. V Pythonu 3 už to funguje. >Co se tyka toho 'a+', zkousel jsem to i s jinymi R/W mody, ale >vysledek stejny. Znamena to, ze Windows ma z nejakeho duvodu problem s >"obousmerne" otevrenym souborem? Bavil jsem se o tom s kolegou >javistou, ktery tvrdi, ze treba v Jave vubec koncept R/W souboru neni >(udajne jsou jen R nebo W streamy). Tak me napadlo, ze to je proste >jejich "workaround" pro platformove specificke problemy s praci se >soubory. Ona je to taky trochu koncepční záležitost. Když je soubor otevřen pro připisování na konec, jak lze správně rozhodnout, že soubor už skončil? Pokud chci použít operaci "přečti soubor až do konce souboru", je takový požadavek vůbec korektní? Další zádrhel, který by v tomto případě mohl hrát roli, je rozlišování binárního a textového otevření souboru. Je všeobecně známé, že řada vývojářů pod Unixem na rozlišování kašle, protože obsah souboru v ASCII načteme stejně, ať se to otevře v textovém nebo v binárním režimu. V textovém režimu se taky z důvodů kompatibility interpretuje Ctrl-Z jako EOF. V současnosti ale asi nikdo explicitně do souboru jako EOF znak Ctrl-Z necpe. Je možné, že implementace interpretace EOF můžou být různě zprasené. Otvírání textových souborů pro současné čtení a zápis je ale taky problematické, protože textové soubory už často bývají v UTF-8 a seek lze dělat jen velmi opatrně. Jediný spolehlivý způsob je chovat se k souboru jako k stream. Java je UNICODE, takže odtud může pramenit rozhodnutí nedělat podobné low-level prasárny jako seek v textovém souboru. Petr _______________________________________________ Python mailing list Python@py.cz http://www.py.cz/mailman/listinfo/python