[python] vytváření souboru

azurit na pobox.sk azurit na pobox.sk
Úterý Září 24 09:51:25 CEST 2019


A ako robis ten zapis 'po castiach'? Subor zavries a znovu otvoris? Ak  
ano, skusal si miesto toho urobit flush()?





Citát zu1234 <zu1234 na seznam.cz>:

> Myslím že to není můj případ:
> Soubor byl otevřen jednoduše, tedy předpokládám buffrovaně:
> with file(FFN_OUT, 'wb') as FI:
>
> Soubor nebyl tlačen po síti, byl umístěn lokálně na C: .
>
> Děkuji za zájem.
> Z vašich reakcí vyplývá že jsem asi neudělal žádnou primitivní  
> chybu, jen jsem prostě šlápl mimo dálnici.
>
> Dne 24.9.2019 v 8:13 mtip napsal(a):
>> A neukládal si to po netu?
>>
>> On x86 (32-bit) or IA64 (64-bit) systems, the maximum buffer size  
>> is just under 64MB. For X64 systems, the maximum buffer size is  
>> just under 32MB.
>> The maximum unbuffered read and write size limits are imposed by  
>> the design of the IO manager inside the Windows executive.
>> When an application reads or writes files that are opened with  
>> FILE_FLAG_NO_BUFFERING,
>> the IO Manager locks the application's buffer into physical RAM and  
>> then maps the virtual addresses into physical addresses
>> to pass to the disk device by making a memory descriptor list (MDL).
>> The buffer size limitation comes from the maximum size MDL that the  
>> IO Manager will create.
>> The reason for the difference between platforms is the way the  
>> maximum buffer size is calculated from the memory page size and  
>> pointer size.
>> The IO Manager uses the following formula to compute the maximum size MDL:
>>
>> ((65535 - sizeof(MDL)) / sizeof(ULONG_PTR)) * PAGE_SIZE
>>
>> This formula has the following results:
>>
>> Processor Page Size Pointer Size MDL calculation
>> ======== ======== ========= =============
>>
>> x86 (32-bit) 4096 4 bytes ((65535 - 28) / 4) * 4096 = 67076096  
>> bytes (63.97 MB)
>>
>> IA64 8096 8 bytes ((65535 - 48) / 8) * 8192 = 67051520 bytes (63.95 MB)
>>
>> X64 4096 8 bytes ((65535 - 48) / 8) * 4096 = 33525760 bytes (32MB - 28K)
>>
>> This limitation occurs when the file is opened with FILE_FLAG_NO_BUFFERING.
>>
>> Dne 23.09.2019 v 16:43 zu1234 napsal(a):
>>> W10 prof 32 bit
>>> Filesystém NTFS
>>> Python 2.7.15
>>> Opakuji: pokud soubor zapisuju po částech, tak bez problému.
>>> Znovu jsem to zkoušel zapsat vcelku: neprošlo cca 100MB.
>>>
>>> Dne 23.9.2019 v 16:14 Petr Messner napsal(a):
>>>> Na jakém systému? Linux?
>>>>
>>>> Nezapisoval jsi soubor větší než 4 GB na FAT32?
>>>>
>>>> Nezapisoval jsi do souboru otevřeném jen pro čtení?
>>>>
>>>> Nejsi na 32bit systému, nebo nemáš spuštěný 32bit Python?
>>>>
>>>> Jen tak na zkoušku jsem si v Pythonu 3 zkusil jedním write zapsat  
>>>> 20GB soubor, bez problému.
>>>>
>>>> PM
>>>>
>>>> po 23. 9. 2019 v 15:59 odesílatel zu1234 <zu1234 na seznam.cz  
>>>> <mailto:zu1234 na seznam.cz>> napsal:
>>>>
>>>>     IOError, 22, Invalid argument
>>>>
>>>>
>>>>
>>>>     Dne 23.9.2019 v 13:10 Petr Messner napsal(a):
>>>>>     A jaký byl text toho IOError? To, že to nic neříká tobě,  
>>>>> neznamená, že to nevysvětluje tu chybu :)
>>>>>
>>>>>     file.write je high level metoda, která volá OS syscall write  
>>>>> tolikrát, kolik je potřeba, takže teoreticky jsi omezený jen  
>>>>> velikostí RAM.
>>>>>
>>>>>     PM
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>     po 23. 9. 2019 v 11:43 odesílatel zu1234 <zu1234 na seznam.cz  
>>>>> <mailto:zu1234 na seznam.cz>> napsal:
>>>>>
>>>>>         Při vytváření (binárního) souboru pomocí file.write()  
>>>>> jsem se utkal s
>>>>>         nic neříkající chybou io error ... .
>>>>>         Nakonec jsem zjistit že větší soubor je nutno zapisovat  
>>>>> po částech a ne
>>>>>         naráz.
>>>>>         Nenašel jsem jak zjistit jak největší může ta část být.
>>>>>         Program funguje, ale chtěl bych vědět víc.
>>>>>         Orientuje se někdo lépe?
>>>>>         Díky ZU
>>>>>
>>>>>
>>>>>         _______________________________________________
>>>>>         Python mailing list
>>>>>         python na py.cz <mailto:python na py.cz>
>>>>>         http://www.py.cz/mailman/listinfo/python
>>>>>
>>>>>         Visit: http://www.py.cz
>>>>>
>>>>>
>>>>>     _______________________________________________
>>>>>     Python mailing list
>>>>>     python na py.cz <mailto:python na py.cz>
>>>>>     http://www.py.cz/mailman/listinfo/python
>>>>>
>>>>>     Visit: http://www.py.cz
>>>>
>>>
>>> _______________________________________________
>>> Python mailing list
>>> python na py.cz
>>> http://www.py.cz/mailman/listinfo/python
>>>
>>> Visit: http://www.py.cz
>>>
>> _______________________________________________
>> Python mailing list
>> python na py.cz
>> http://www.py.cz/mailman/listinfo/python
>>
>> Visit: http://www.py.cz
>
>
> _______________________________________________
> Python mailing list
> python na py.cz
> http://www.py.cz/mailman/listinfo/python
>
> Visit: http://www.py.cz





Další informace o konferenci Python