Всем привет. Пробую себя в написании аплодера файлов на rghost И вот дальше этого кода мысль встала Code: #!/usr/bin/python # -*- coding: utf-8 -*- import urllib import urllib2 data= {} data['authenticity_token'] = 'joCl96XEXhfW2AU54TrblablablaNieWixd7MfUpPgB1nZViA=' data['file'] = open('/home/user/scripts/toonel.jar') url_values = urllib.urlencode(data) url = 'http://phonon.rghost.ru/files' full_url = url + '?' + url_values headers = {'User-Agent' : 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0)'} data=urllib2.urlopen(full_url) thepage = data.read() Соответственно скрипт вывод хтмл код сайта, а хотелось бы чтобы выводил линк на загруженный файл. Подскажите, пожалуйста, куда дальше копать и что делать.
Наконец-то в соответствующий раздел... Ответ очень прост: 1) Проснифать сессию работы браузера и своего скрипта, и выявить отличия 2) Понять что Python не формирует multi-part data автоматически, просто по твоему желанию. 3) Полазить по activestate и найти пример как создавать multi-part P.S. когда-то делал подобное, тогда замучился конкретно... Ссылочка на activestate :http://code.activestate.com/recipes/146306/
Code: count(...) S.count(sub[, start[, end]]) -> int Return the number of non-overlapping occurrences of substring sub in string S[start:end]. Optional arguments start and end are interpreted as in slice notation. "This is the string".count('is')
Насчет повторов - рекомендою взглянуть на модуль collections, на класс Counter, советую поглядеть, авось лучше будет. =========================================================== А теперь пост для тех, кто как и я думает, переезжать ли на Python 3.1 или оставаться на 2.6.2, ответ : однозначно НУ ЕГО НА ХУЙ PYTHON 3.1. Я прошу прощения за неадекватность предыдущего предложения, но после нескольких месяцев юзания Python3.1 могу сказать что щас обратно возвращаюсь на 2.6 бажность убивает. Последним подтверждением был сегодняшний тестовый запуск скрипта с гуем на ттк, это пиздец просто, слов нету. Умолчу о каких-то непонятках с конфигпарсером и кириллицей, мать их. Скрипт под линем запустился 3/3 , под виндой 5/5 Но вот под виндой ни разу нормально не отработал, висняки либо в начале работы, либо в конце (болезненно они реагируют на messagebox). Короче советую задуматься над этим, я лично был искушен красивым ttk под Python3.1
Кстати я тоже пробовал перейти на 3.1, но с ним у меня отказались alsa-lib компилироваться.Откатился обратно на 2.6.2
Я сижу под бубунтой, таких проблем не возникало, 3.1 собирал как из исходников, так и качал из репов 3.01 а потом уже собирал 3.1 (пытался таким образом решить проблему с зависимостями), собиралось и работало без проблем. Зато вот под Slackware (а точнее ,VectorLinux) был трабл (скорее всего рожден малым опытом и слабыми познаниями в *NIX) - 3.1 заменил собой 2.6, последствия были убойными
Доброго дня всем присутствующим! У меня проблема с библиотекой PIL (Python Image Library). Мне требуется создать изображение из данных полученных с сервера. Сейчас использую костыль: создаю файл, после пишу в него данные с сервера, после с помощью "Image.open("2.jpg")" получаю эту самую картинку. Так что вопрос в том как создать картинку без сохранения в файл, т.е. чтобы выглядело примерно так: Image.raw(data).
Короч, с PIL не работал, рекомендую посмотреть в сторону StringIO (дает файловый интерфейс к строке и т.д.)
Например в буфер загрузить? Code: import urllib2, StringIO, Image ## загружаем картинку в переменную stream = urllib2.urlopen('http://images.domain.com/atacks.gif') ## помещаем картинку в буфер buffer = StringIO.StringIO(stream.read()) ## im - объект-картинка im = Image.open(buffer)
Code: import urllib2, StringIO, Image stream = urllib2.urlopen('http://images.domain.com/atacks.gif') buffer = StringIO.StringIO(stream.read()) im = Image.open(buffer) Оно самое
rushter глобальные имена должны объявляться, если им будут присваиваться значения внутри функции... def ret(): global num num = 0 return num+1 вот это уже работает.. и еще лучше не называть модуль зарезервированным словом, ибо мы получаем ошибку при from def import * (хотя, если это просто сокращенный пример, то все ок).
Честно говря, никогда не встречал таких конструкций, если бы мне нужно было в какой -нибудь моей функции в составе какого либо модуля получить достпу к какой-либо переменной то я делал бы приблизительно так : Code: class def_: def __init__(self): self.num = 0 def ret(self): return self.num а потом уже делал бы как-то так : Code: import config import def #это если ты все таки решишь назвать его def.py, а класс def_ положишь в него def_ = def.def_() def_.num = config.num Конструкция ненамного сложнее, зато позволяет избавиться от некошерного global. P.S. Исходя из имен файла, то я бы посоветовал поглядеть в сторону ConfigParser ....
Ладно, можно сделать и наоборот Code: class def_: def __init__(self): self.config = None def ret(self): return self.config.num Вызов потом сделать так : Code: import config import def #это если ты все таки решишь назвать его def.py, а класс def_ положишь в него def_ = def.def_() def_.config = config print def_.ret() Просто немного поопираться на то что это обьекты, да и все станет попроще. Либо на крайняк можно реализовать взаимодействие классов через какие-либо свои приколы, если честно, то просто нужно глянуть код и посмотреть, чего там можно переделать. Модульность то предполагает собой классы как таковые , просто дай второму классу хэндлер на первый, и пущай он там себе обрабатывает его
Можно код в ПМ ? Просто как я показал, то я таким образом сам увязываю, когда начинаю косить под ООП и у мну получается несколько standalone классов, проблем в принципе никогда не было... P.S. Подозреваю, что ты неправильно его привязал. P.P.S. Если у тебя есть аттрибут keys это вообще очень некошерно.
Code: import os import sys level_down_dir = u"configs" dir_path = os.getcwdu()+os.sep+level_down_dir+os.sep dir_path = current_dir.encode(sys.getfilesystemencoding()) sys.path.append(dir_path) А дальше пох.. Или, как вариант можно юзать __import__(), но я точно не помню как он работает
К примеру, можно в начале тела скрипта узнать текущее время, а в конце скрипта вычесть из текуего времени, время которое ты узнал в начале скрипта и получить время работы скрипта! Во как завернул!