Python-рецепты. Файлы и www.


Очередная статья первой серии рецептов для python. Здесь мы разберемся как работать с файлами и принимать информацию из интернета. Читаем и просвещаемся, потому как данный материал будет использоваться на практике для прогнозирования временных рядов в следующем цикле статей. Предоставленная информация не отражает всех возможностей python, тем не менее для работы с онлайн-котировками приведенных примеров будет достаточно.

Работа с файлами

# -*- coding: UTF-8 -*-
# python-рецепты (работа с файлами)

## создаем файл и записываем в него 2-е строки
# режим работы "w" - если файла нет, то он создается
# если есть - перезаписывается
f = open('1.txt', 'w')
# \n - перевод на новую строку
f.write('Текст первой строки\n')
f.write('Текст второй строки\n')
# сохраняем изменения в файле
f.close()

## дописываем в конец файла дополнительные строки
# если бы файла не было - он бы создался
# параметр 'a+' - дописываем в конец файла
f = open('1.txt', 'a+')
f.write('Новая строка (добавочная)')
f.close()

## открываем файл для чтения и выводим его содержимое
# 'r' - режим чтения
f = open('1.txt', 'r')
# в переменную line передается текст файла как одна строка
line = f.read()
# выводим содержимое
print u'===> содержимое файла'
print line
print u'===> содержимое файла в нормальной кодировке'
print line.decode('utf-8')
print u'===> количество символов', len(line)
f.close()

## считываем файл как массив строк
f = open('1.txt', 'r')
# в переменную lines передается массив срок файла
lines = f.readlines()
f.close()
# при выводе массива наблюдаем вместо обычных символов их коды
print u'\n===> массив строк файла'
print lines
# выведем каждую строку массива по отдельности
print u'\n===> выведем каждую строку массива по отдельности'
for line in lines:
    print line.decode('utf-8')

В результате должно получится что-то вроде этого:

Работа с интернетом

В качестве иллюстрации работы с интернетом рассмотрим небольшой скрипт, приведенный ниже.

# -*- coding: UTF-8 -*-
# python-рецепты (интернет и urllib)

# импортируем модуль для работы с интернетом
import urllib

site = urllib.urlopen('http://ya.ru')
page = site.read()
# те же проблемы с кодировкой
print page
# исправляемся
print page.decode('utf-8')

Запустив все это в PyScripter увидим html-код облегченной страницы Яндекса:

Для работы с www в контексте работы с онлайн котировками нам больше знать и ненужно. Подробные примеры использования модуля urllib и других питоновских библиотек для работы с интернетом можно найти в моих предыдущих статьях (с тегом bot ).

Если есть вопросы – задаем.

P.S. Во избежание проблем с кодировками решил написать сетевое приложение в линуксе. Как оказалось там свои тонкости работы с www: например строчка

page = site.read()

в Ubuntu 9 работать не будет (а в десятой, например, работает). Поэтому иногда лучше сразу использовать модуль urllib2.

, ,



  1. Пока нет комментариев.
(никто не узнает)