Уведомления

Группа в Telegram: @pythonsu

#1 Сен. 18, 2009 11:07:30

Ed
От:
Зарегистрирован: 2008-12-13
Сообщения: 1032
Репутация: +  13  -
Профиль   Отправить e-mail  

Запись массива в текстовый файл по n элементов в строке

Или даже так:

result = [int(i) for i in open('text.txt').read().split()]



Офлайн

#2 Сен. 18, 2009 11:09:51

GDK
От:
Зарегистрирован: 2009-08-21
Сообщения: 68
Репутация: +  0  -
Профиль   Отправить e-mail  

Запись массива в текстовый файл по n элементов в строке

В копилку.



Офлайн

#3 Сен. 18, 2009 11:13:06

Ed
От:
Зарегистрирован: 2008-12-13
Сообщения: 1032
Репутация: +  13  -
Профиль   Отправить e-mail  

Запись массива в текстовый файл по n элементов в строке

GDK
А как думаете f=open('text.txt','w') копирует файл в оперативку и потом f.close() сохраняет изменения?? или при каждом f.write(line + ‘\n’) происходит обращение к жёстк. диску?
open открывает файл на запись. write пишет в буфер. Когда буфер заполняется, то он флешится на диск. Как-то так.
Для данного примера естественно флешиться будет при закрытии - слишком маленький объем информации.
Если есть цель минимизировать запись на диск, то можно увеличить буфер файла.



Отредактировано (Сен. 18, 2009 20:58:10)

Офлайн

#4 Сен. 18, 2009 14:03:20

Ferroman
От:
Зарегистрирован: 2006-11-16
Сообщения: 2759
Репутация: +  1  -
Профиль   Отправить e-mail  

Запись массива в текстовый файл по n элементов в строке

write пишет сразу в файл, на диск. close просто закрывает файл.

Офлайн

#5 Сен. 18, 2009 14:05:05

GDK
От:
Зарегистрирован: 2009-08-21
Сообщения: 68
Репутация: +  0  -
Профиль   Отправить e-mail  

Запись массива в текстовый файл по n элементов в строке

Ну понятно спасибо. Просто хотелось понять как всё это работает и что используется.
Иногда содержимое файла предлагают писать в переменную. Если файл большой то это сильно отожрёт оперативку и получится неоправдано так делать.



Офлайн

#6 Сен. 18, 2009 15:56:59

Ed
От:
Зарегистрирован: 2008-12-13
Сообщения: 1032
Репутация: +  13  -
Профиль   Отправить e-mail  

Запись массива в текстовый файл по n элементов в строке

Ferroman
write пишет сразу в файл, на диск. close просто закрывает файл.
Читаем доки:
file.write(str)
Write a string to the file. There is no return value. Due to buffering, the string may not actually show up in the file until the flush() or close() method is called.



Офлайн

#7 Сен. 18, 2009 16:36:50

Ferroman
От:
Зарегистрирован: 2006-11-16
Сообщения: 2759
Репутация: +  1  -
Профиль   Отправить e-mail  

Запись массива в текстовый файл по n элементов в строке

Да действительно, так и есть.

Офлайн

#8 Сен. 21, 2009 15:01:21

Viper
От:
Зарегистрирован: 2006-11-08
Сообщения: 137
Репутация: +  0  -
Профиль   Отправить e-mail  

Запись массива в текстовый файл по n элементов в строке

Вставлю свои 5 копеек :). Вы похоже совсем забыли что у range может быть 3 аргумента и имхо как раз в такой ситуации его удобно использовать вместо констукции if not i % 8 or i == 25.



Офлайн

#9 Сен. 21, 2009 16:12:47

Ed
От:
Зарегистрирован: 2008-12-13
Сообщения: 1032
Репутация: +  13  -
Профиль   Отправить e-mail  

Запись массива в текстовый файл по n элементов в строке

Viper
Вставлю свои 5 копеек :). Вы похоже совсем забыли что у range может быть 3 аргумента и имхо как раз в такой ситуации его удобно использовать вместо констукции if not i % 8 or i == 25.
Нет, не забыл. Покажите как это сделать, я не вижу.



Офлайн

#10 Сен. 21, 2009 16:49:39

Viper
От:
Зарегистрирован: 2006-11-08
Сообщения: 137
Репутация: +  0  -
Профиль   Отправить e-mail  

Запись массива в текстовый файл по n элементов в строке

a = range(10)
f = open('result.txt', 'w')
beg = 0
for i in xrange(8, len(a) + 8, 8):
f.write(' '.join(map (str, a[beg:i])) + '\n')
beg = i
или вариант в одну строку :)
a = range(10)
open('result.txt', 'w').writelines((' '.join(map(str, line)) + '\n' for line in map(a.__getslice__, range(0, len(a), 8), range(8, len(a) + 8, 8)))



Отредактировано (Сен. 21, 2009 19:32:35)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version