Niedawno poznałem obiekt readinto
obiektu file
(w Pythonie 2.7), jest on podobny do fread
w C. Wydaje się, że w niektórych przypadkach jest wygodny i potężny. Mam zamiar użyć go do odczytu kilku plików w jeden wstępnie przydzielony numpy array bez danych skopiowanych.Czy powinienem używać metody `readinto` z pliku Pythona, czy nie?
np.
a = np.empty(N)
b = memoryview(a)
fp1.readinto(b[0:100])
fp2.readinto(b[100:200])
i
fp1.readinto(b[0:100])
fp1.seek(400, 1)
fp1.readinto(b[100:200])
Użyłem Cython
i fread
to zrobić, zanim poznałem readinto
. Tak więc jestem bardzo szczęśliwy, gdy poznałem czysty system Pythona.
jednak twierdzi, że jej ciąg dokument,
file.readinto?
Type: method_descriptor
String form: <method 'readinto' of 'file' objects>
Namespace: Python builtin
Docstring: readinto() -> Undocumented. Don't use this; it may go away.
Nie używaj tego? Co się stało?
Więc jestem zdezorientowany, czy powinienem użyć readinto
czy nie? Może to powodować niechciany problem?
Czy jest jakaś alternatywna implementacja dla powyższego kodu bez readinto
, ale także unikaj kopiowania danych? (Aby uniknąć kopiowania, oznacza to, że np.concatenate
lub np.stack
nie jest dobrym wyborem.)
Wszelkie sugestie są mile widziane! Dziękuję Ci.
------- upate -------
Wydaje się, że mogę używać io.FileIO
w bibliotece standardowej zamiast budować w funkcji open
. Wygląda OK, więc zamieściłem to jako odpowiedź.
Każdy komentarz lub inne rozwiązanie jest nadal mile widziane!
------- upate -------
Jeśli spełniasz ten sam problem, może warto spojrzeć na poniższych uwag przez
Andrea Corbellini i Padraic Cunningham.
Może odpowiedzieć na pytanie http://stackoverflow.com/questions/9791780/readinto-replacement –
@AndreaCorbellini Wystarczy wpisując 'file.readinto?' W ipython , jest to odpowiednik 'help (file.readinto)' w standardowej powłoce Pythona. Sprawdziłem inne metody 'file', jak powiedziałeś, ale tylko' readinto' pokazuje tę wiadomość. –
Czy może chcesz memmap? Http: //docs.scipy.org/doc/numpy-1.10.0/reference/generated/numpy.memmap.html –