2011-08-20 23 views
9

Otworzyłem plik 8   MB w Pythonie, ponieważ chciałem grupować zmiany różnych typów nazw plików. Przeszedłem i załadowałem plik na ciąg znaków i użyłem metody łańcuchowej, aby zastąpić wszystko. Zauważyłem wtedy, że tylko połowa pliku została zastąpiona; jakby Python nie w pełni otwierał plik.Maksymalny rozmiar pliku Python można otworzyć?

Czy istnieje jakiś limit rozmiaru ciągu znaków lub maksymalny limit rozmiaru pliku, który muszę odtworzyć w granicach Pythona?

Patrz kod w pozycji Python search and replace not replacing properly.

Zmieniłem na sugerowany kod. Bufor to plik HTML 8   MB, który ma ponad 150 000 linii. Kod zamienny działa idealnie; po prostu nie zastępuje wszystkiego. Lub na przykład jeden błąd, który jest ból:

Kiedy próbuję zastąpić ciąg ff10 do FF-10, zostanie zmieniony na FF-010.

+5

Można otworzyć plik o dowolnym rozmiarze, ale po przeczytaniu całego pliku, MemoryOverflow może wystąpić, ponieważ system 32-bitowy może przydzielić tylko 2 GB na proces lub może nie być wystarczającej ilości pamięci. –

+3

Pokaż kod, który daje ci problem, w ten sposób możesz uzyskać bardziej użyteczną odpowiedź niż taką, która po prostu powie ci, czy twoje zdanie jest słuszne, czy nie. :) –

+0

Dodano link do mojego kodu – nobody

Odpowiedz

14

Nie, nie ma osiągalnego maksimum rozmiaru pliku, który może otworzyć Python. 8   MB to malutki w nowoczesnych terminach. Gdzieś popełniłeś błąd.

Osób regularnie ładuje gigabajtów danych do pamięci. W zależności od pamięci RAM komputera, bez względu na to, czy jest to 64- czy 32-bitowy system operacyjny i procesor, maksymalne praktyczne maksimum może wynosić od 1   GB, zanim uzyskasz MemoryError.

Jako test, właśnie załadowałem plik 350   MB do łańcucha. Zajęło to tylko kilka sekund. Następnie zapisałem go z powrotem do pliku. Trochę to trwało. Potem zahartowałem plik. Te dwie są identyczne.

Python nie ma problemów z dużymi ciągami, dopóki nie osiągniesz limitu pamięci RAM, systemu operacyjnego lub procesora.

Mówisz, że "przeszedłeś i wczytałeś plik w sznurki" - to brzmi jak pierwsze miejsce, w którym mógłbyś popełnić błąd. Aby załadować plik do łańcucha, wystarczy wykonać fileobject.read(). Jeśli zrobiłeś to w inny sposób, to może być problem.

+0

Co ze strunami? – nobody

+0

@ nikt nie zobaczył mojego komentarza na ciebie pytanie –

+0

Zrobiłem test i dodałem wyniki do mojej odpowiedzi. – agf

Powiązane problemy