Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> ошибка записи файла, не могу понять в чем проблема 
:(
    Опции темы
barbocc
Дата 17.5.2012, 15:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 26.1.2011

Репутация: нет
Всего: нет



Доброго времени суток!

не могу понять в чем проблема?

Код

import pickle
f1 = open("cddspam.dat", "w")
pickle.dump(huffmantext, f1)
f1.close()


Выводит:
Цитата

TypeError: can't write bytes to text stream

в чем проблема, подскажите, а то я совсем недавно изучаю Питон


Это сообщение отредактировал(а) barbocc - 17.5.2012, 15:35
PM MAIL   Вверх
bilbobagginz
Дата 20.5.2012, 00:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Naughtius Maximus
****


Профиль
Группа: Экс. модератор
Сообщений: 8813
Регистрация: 2.3.2004
Где: Israel

Репутация: 6
Всего: 317



ты открыл канал в текстовом режиме, а пикл пытается напиасАть в него в бинарном режиме, вот система и выдает тебе ошибку.
открывай канал  в бинарном режиме.




--------------------
Я ещё не демон. Я только учусь.
PM WWW   Вверх
Karadul
Дата 20.5.2012, 15:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 378
Регистрация: 18.5.2006

Репутация: нет
Всего: 1



У Меня  Все Работает, Что Я Делаю Не Так?
PM MAIL   Вверх
rsm
Дата 21.5.2012, 14:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник Клуба
Сообщений: 999
Регистрация: 16.3.2005

Репутация: нет
Всего: 62



Цитата(Karadul @  20.5.2012,  17:41 Найти цитируемый пост)
У Меня  Все Работает, Что Я Делаю Не Так? 

Запускаешь программу в Python 2.x? smile
PM MAIL   Вверх
Karadul
Дата 21.5.2012, 15:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 378
Регистрация: 18.5.2006

Репутация: нет
Всего: 1



Цитата(rsm @  21.5.2012,  14:07 Найти цитируемый пост)
Запускаешь программу в Python 2.x? 

А где-то написано, что у ТС 3.х?

Кстати, а нахрена сейчас нужен текстовый режим и почему он в винде по дефолту?
PM MAIL   Вверх
rsm
Дата 22.5.2012, 03:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник Клуба
Сообщений: 999
Регистрация: 16.3.2005

Репутация: нет
Всего: 62



Цитата(Karadul @  21.5.2012,  17:18 Найти цитируемый пост)
А где-то написано, что у ТС 3.х?

Нет. Равно как и в твоём "УМВР, ЧЯДНТ", ценность которого сводится к нулю smile

Цитата(Karadul @  21.5.2012,  17:18 Найти цитируемый пост)
нахрена сейчас нужен текстовый режим

Для файлов, открытых в бинарном режиме, нет понятий "строка", "конец строки". Поэтому их нельзя читать/писать по строкам. Что часто бывает нужно, например в твоей же собственной теме про конфиг без секций.
PM MAIL   Вверх
Karadul
Дата 22.5.2012, 14:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 378
Регистрация: 18.5.2006

Репутация: нет
Всего: 1



Цитата(rsm @  22.5.2012,  03:28 Найти цитируемый пост)
Для файлов, открытых в бинарном режиме, нет понятий "строка", "конец строки". Поэтому их нельзя читать/писать по строкам. 

Что за бред?
Код

>>> f=file(r'123','rb')
>>> f.readline()
"S'1234'\r\n"

Текстовые файлы отличаются тем, что они обращают внимания на управляющие последовательности, например, конец файла с кодом 26.

Цитата(rsm @  22.5.2012,  03:28 Найти цитируемый пост)
Нет. Равно как и в твоём "УМВР, ЧЯДНТ", ценность которого сводится к нулю 

Мой ответ говорит о том, что я не понял вопрос. Ведь у меня УМВР, ЧЯДНТ.

В тройке действительно не работает. Причина в том, что в тройке в двоичные файлы можно писать только байты, а в текстовые - только строки (юникодовые), остальное надо перекодировать вручную.

Вообще, авторам тем хорошо бы писать версии питона, чтобы другие свое время не тратили.
PM MAIL   Вверх
rsm
Дата 22.5.2012, 17:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник Клуба
Сообщений: 999
Регистрация: 16.3.2005

Репутация: нет
Всего: 62



Цитата(Karadul @  22.5.2012,  16:08 Найти цитируемый пост)
Текстовые файлы отличаются тем, что они обращают внимания на управляющие последовательности, например, конец файла с кодом 26

Ага, значит уже допилили.
PM MAIL   Вверх
Karadul
Дата 22.5.2012, 18:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 378
Регистрация: 18.5.2006

Репутация: нет
Всего: 1



Цитата(rsm @  22.5.2012,  17:44 Найти цитируемый пост)
Ага, значит уже допилили.

Что допилили? 

Так все-таки, кому нужен такой режим?
PM MAIL   Вверх
rsm
Дата 23.5.2012, 02:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник Клуба
Сообщений: 999
Регистрация: 16.3.2005

Репутация: нет
Всего: 62



Цитата(Karadul @  22.5.2012,  20:30 Найти цитируемый пост)
Что допилили?

Что чтение строк нормально работает даже в бинарном режиме. В старых библиотеках с этим бывали косяки.

Цитата(Karadul @  22.5.2012,  20:30 Найти цитируемый пост)
Так все-таки, кому нужен такой режим?

Вероятно, оставили для совместимости. В мане про бинарный режим пишут следующее:

Цитата(fopen(2))
The mode string can also include the letter 'b' either as a last character or as a character between the characters in any of the two-character strings described above. This is strictly for compatibility with C89 and has no effect; the 'b' is ignored on all POSIX conforming systems, including Linux. (Other systems may treat text files and binary files differently, and adding the 'b' may be a good idea if you do I/O to a binary file and expect that your program may be ported to non-UNIX environments)


PM MAIL   Вверх
Karadul
Дата 23.5.2012, 03:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 378
Регистрация: 18.5.2006

Репутация: нет
Всего: 1



В винде с текстовыми файлами есть косяки: "\r" заменяется на "\r\n", а в тройке в юникодные строки напрямую можно писать только в текстовый файл. Что делать?
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Python: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0603 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.