Mam tę funkcję, którą chcę odczytać pojedynczy bajt z dużego pliku. Jedynym problemem jest to, że po pewnej ilości odczytanych plików, pamięć komputera podnosi się ze stałej wartości od 1,5 g na 4 gb i więcej w zależności od liczby odczytów plików. (Rozbijam na 80 plikach, ponieważ wyższy powodowałby awarię mojego komputera)Odczytaj jeden bajt z dużego pliku
Wszystko, czego chcę, to uzyskać 1 bajt, a nie cały plik. Prosimy o pomoc.
def mem_test():
count = 0
for dirpath, dnames, fnames in scandir.walk(restorePaths[0]):
for f in fnames:
if 'DIR.EDB' in f or 'PRIV.EDB' in f:
f = open(os.path.join(dirpath, f), 'rb')
f.read(1) #Problem line!
f.close()
if count > 80:
print 'EXIT'
sys.exit(1)
count += 1
mem_test()
Więc co się dzieje na linii '' #Problem? Błąd? ... czy potrzebujesz wartości zwrotu? – Ryan
Czy dzieje się tak, nawet jeśli nie czytasz? Nie otwierać? Nie powtarzaj nad 'fnames'? –
@JasonGray: Czy Twój problem nadal występuje, gdy zmieniasz ręczne otwieranie/zamykanie na instrukcję 'with', jak wspomniano w [dokumentacji] (http://docs.python.org/2/tutorial/inputoutput.html#methods- obiektów-plików)? W ten sposób jest bezpieczniej: 'with open (os.path.join (dirpath, f), 'rb') jako f: f.read (1)'. Może nie zamkniesz tych plików, niezależnie od tego, co tu widzimy? – Tadeck