[python] vytváření souboru
zu1234
zu1234 na seznam.cz
Úterý Září 24 09:49:12 CEST 2019
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
Další informace o konferenci Python