Найти - Пользователи
Полная версия: Запись массива в текстовый файл по n элементов в строке
Начало » Python для новичков » Запись массива в текстовый файл по n элементов в строке
1 2 3
Ed
Или даже так:
result = [int(i) for i in open('text.txt').read().split()]
GDK
В копилку.
Ed
GDK
А как думаете f=open('text.txt','w') копирует файл в оперативку и потом f.close() сохраняет изменения?? или при каждом f.write(line + ‘\n’) происходит обращение к жёстк. диску?
open открывает файл на запись. write пишет в буфер. Когда буфер заполняется, то он флешится на диск. Как-то так.
Для данного примера естественно флешиться будет при закрытии - слишком маленький объем информации.
Если есть цель минимизировать запись на диск, то можно увеличить буфер файла.
Ferroman
write пишет сразу в файл, на диск. close просто закрывает файл.
GDK
Ну понятно спасибо. Просто хотелось понять как всё это работает и что используется.
Иногда содержимое файла предлагают писать в переменную. Если файл большой то это сильно отожрёт оперативку и получится неоправдано так делать.
Ed
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.
Ferroman
Да действительно, так и есть.
Viper
Вставлю свои 5 копеек :). Вы похоже совсем забыли что у range может быть 3 аргумента и имхо как раз в такой ситуации его удобно использовать вместо констукции if not i % 8 or i == 25.
Ed
Viper
Вставлю свои 5 копеек :). Вы похоже совсем забыли что у range может быть 3 аргумента и имхо как раз в такой ситуации его удобно использовать вместо констукции if not i % 8 or i == 25.
Нет, не забыл. Покажите как это сделать, я не вижу.
Viper
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)))
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