Форум сайта python.su
Питон изучаю уже целый день, так что можно сказать, что я продвинутый программер на питоне Но вот незадача - не получается вывести данные в файл в нормальном виде.
Приведу часть кода
item_data = { 'title_ru': title_ru, 'title_en': title_en, 'rate': (rate_percent / 10), 'year': year, 'date_rated': normalize_date(date_rated), 'date_watched': normalize_date(date_watched), 'details_url': details_url } rates.append(item_data)
open(OUTPUT_FILENAME, 'w') as f: pickle.dump(get_rates(URL_RATES_ALL, True), f)
\xd1\xe5\xf0\xfc\xb8\xe7\xed\xfb\xe9 \xf7\xe5\xeb\xee\xe2\xe5\xeaКак получить читаемый результат?
Отредактировано IVZ (Сен. 6, 2013 14:20:15)
Офлайн
pickle.dump - с чего вы решили что там будут читаемые символы?
Отредактировано sp3 (Сен. 6, 2013 16:48:25)
Офлайн
Мопед скрипт не мой, я просто пытаюсь запустить готовый скрипт на своём компе.
Исходники тут. Насколько я понимаю, у автора всё работает.
https://github.com/idlesign/imhodump
Думаю, тут дело в системе. Скорее всего автор запускал его на никсах, а у меня окошки. Не мне вам рассказывать, что у них разные системные кодировки.
Офлайн
IVZ
Вам же написал sp3. Модуль pickle пакует объекты по своим внутренним алгоритмам. При открытии файла любого расширения получится чушь и это нормально. Чтобы получить данные нужно отркрыть файл для чтения и сделать data = pickle.load(ссылка_на_файловый_объект). В результате data станет ссылкой на “задампированный” (или сохраненный) предварительно объект.
Если Вы хотите просто сохранить строчки текста, то можно применить следующий механизм
file_ = open("data.txt", "w") file_.write(str(object_to_save))
Отредактировано 4kpt (Сен. 6, 2013 20:00:23)
Офлайн
4kptЗаменил вывод на вашу конструкцию. Только добавил file_.close().
IVZВам же написал sp3. Модуль pickle пакует объекты по своим внутренним алгоритмам. При открытии файла любого расширения получится чушь и это нормально. Чтобы получить данные нужно отркрыть файл для чтения и сделать data = pickle.load(ссылка_на_файловый_объект). В результате data станет ссылкой на “задампированный” (или сохраненный) предварительно объект. Если Вы хотите просто сохранить строчки текста, то можно применить следующий механизм
Офлайн
Давайте файл, гляну :)
+ если можно дайте полный код в файле…
Офлайн
Я чуть выше давал ссылку на скрипт
IVZЯ в том скрипте только поменял 'http://idle.imhonet.ru/content/films/rates/all/' на 'http://antony713.imhonet.ru/content/films/rates/all/'
Насколько я понимаю, у автора всё работает. https://github.com/idlesign/imhodump
Офлайн
У меня получилось так.
Поменяйте строки:
if __name__ == '__main__': with open(OUTPUT_FILENAME, 'w') as f: pickle.dump(get_rates(URL_RATES_ALL, True), f)
if __name__ == '__main__': with open(OUTPUT_FILENAME, 'w') as file_: for film in get_rates(URL_RATES_ALL, False): for param in film: line = "%s: %s\n" %(param, film[param]) file_.write(str(line).decode("utf-8").encode("cp1251")) file_.write("-------------------\n")
Офлайн
Работает. И как я сразу до этого не догадался?!
Офлайн
Только теперь на следующие страницы не переходит.
Офлайн