Найти - Пользователи
Полная версия: чтение текстового файла в массив
Начало » Python для новичков » чтение текстового файла в массив
1 2
py.user.next
Забыл в тот раз добавить разделение на строки ещё (поправил там). Ведь мы не можем обрабатывать строки, не отыскав их сначала.

А ещё бывает MemoryError, когда хочешь большой файл загрузить в список.

Alen
И в O(n^2) / O(n) в случае если со строками производятся операции.
Чего? n^2 - это если ты прочитал строки, а потом на основе каждой строки стал что-то делать с каждой строкой.
Если же ты сначала прочитал строки, а потом стал с ними что-то делать - это n + n = 2n.
Alen
py.user.next
Чего? n^2 - это если ты прочитал строки, а потом на основе каждой строки стал что-то делать с каждой строкой.

Я так и написал.
Alen
py.user.next
Если же ты сначала прочитал строки, а потом стал с ними что-то делать - это n + n = 2n.

Ну а прочитал ты их в ту же память.
py.user.next
Alen
Я так и написал.
Так там нет квадрата.

Квадрат - это вот:
>>> for i in range(5):
...   for j in range(5):
...     print(i, j)
... 
0 0
0 1
0 2
0 3
0 4
1 0
1 1
1 2
1 3
1 4
2 0
2 1
2 2
2 3
2 4
3 0
3 1
3 2
3 3
3 4
4 0
4 1
4 2
4 3
4 4
>>>

А вот это 2n:
>>> for i in range(5):
...     print(i)
... 
0
1
2
3
4
>>> for i in range(5):
...     print(i)
... 
0
1
2
3
4
>>>

Он прочитал строки, что-то сделал с каждой, потом записал строки - это всё 3n получилось.

Говорим про то, что быстрее и менее затратно по памяти, .read() из файла и создание списка или перебор файла как итератора без создания списка.

Alen
Ну а прочитал ты их в ту же память.

Есть затраты по времени, есть затраты по памяти. Что по времени, что по памяти перебор итератора не является более затратным, чем .read() + split().
russian_bear
alexsis
Открываете новый файл и в него записываете командой write.

ок, спасибо, а как записать ВЕСЬ массив в файл ?
прочитан файл был вот так:
with open('ctest/bigfile.txt', ‘r’) as big_file:
array_of_strings = big_file.read().split('\n')

записывать умею только вот так:
f = open('ctest/out_file.txt', ‘r+’)
f.write(array_of_strings)
f.close()


собственно не могу понять, как вот в этой команде f.write(array_of_strings) указать весь массив, а не какой-то его один элемент
sypper-pit
russian_bear
Как я понял из кода тебе нужно вложить всё что взял в bigfile.txt обработал и потом всё это закинул в out_file.txt

Тут есть 2 способа
1) создать цикл который построчно будет записывать в фаил
2) использовать readlines
doza_and
russian_bear
А как обратиться допустим к 5 строке и заменить ее на “бла-бла-бла” ?
рекомендую посмотреть https://docs.python.org/3/library/linecache.html
Однако в самом деле нужно больше конкретики.
sypper-pit
doza_and
Да это тоже хорошее решение, можно использовать если питон не ниже 2.5 версии.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB