Уведомления

Группа в Telegram: @pythonsu

#1 Дек. 6, 2009 22:16:28

Kogrom
От:
Зарегистрирован: 2009-12-03
Сообщения: 160
Репутация: +  0  -
Профиль   Отправить e-mail  

Разбить текстовый файл на n кусков по m байт.

Всё равно тут уже пример дали, так что и я поиграюсь:

filename = "*****.***"
BUFF_LEN = 1000

def ReadGen(genFile):
while(True):
buff = genFile.read(BUFF_LEN)
if not buff: return
yield buff

for i, buff in enumerate(ReadGen(open(filename, "rb"))):
open(str(i) + '_' + filename, "wb").write(buff)
Функция с генератором кривоватая какая-то, но лучших делать пока не научился.



Офлайн

#2 Дек. 7, 2009 09:36:45

UsCr
От:
Зарегистрирован: 2009-11-04
Сообщения: 216
Репутация: +  0  -
Профиль   Отправить e-mail  

Разбить текстовый файл на n кусков по m байт.

Создаю файл так:

f = open("test.txt", "w")
for i in range(10000):
f.write("Fish\n")
f.close()
Получаю файл размеров в 59 КБ.
Читаю из него так:
f = open("test.txt", "r")
f_ = open("test_.txt", "w")
data = f.read(1000)
f_.write(data)
f_.close()
f.close()
Получаю файл размером в 2 КБ, содержащим 200 строк слова “Fish”.



Офлайн

#3 Дек. 7, 2009 10:46:01

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

Разбить текстовый файл на n кусков по m байт.

Прям таки и 2 килобайта! Это у вас по 10.24 байта на строку “Fish” приходится :)



Офлайн

#4 Дек. 7, 2009 12:49:12

UsCr
От:
Зарегистрирован: 2009-11-04
Сообщения: 216
Репутация: +  0  -
Профиль   Отправить e-mail  

Разбить текстовый файл на n кусков по m байт.

Ну…Винда считает именно так.
FAR говорит что test_.txt весит 1,200 байт.



Офлайн

#5 Дек. 7, 2009 13:46:13

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

Разбить текстовый файл на n кусков по m байт.

Это уже другое дело. Скорее всего такой эффект из-за того, что файл в текстовом виде открыли, концы строк прибавляются. В бинарном будет ровно 1000.



Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version