: [Errno 13] Отказано в доступе при использовании cElementTree на appengine - PullRequest
0 голосов
/ 04 сентября 2011

Попытка получить файл XML из интернет-источника и проанализировать его на наличие некоторых значений.Мой код:

def get_xml(self):

    #xml_url =   "http://www.shoppingcar.it/feed/export_vel.asp?parametro=1"
    xml_url =   "http://dl.dropbox.com/u/102727/AutoVeloce%20XML%20Splitter/shoppingcar.xml"

    MAX_RETRY = 3
    retry_left = MAX_RETRY

    while retry_left:
        try:
            req =   urlfetch.fetch(xml_url, deadline=10)
            XML =   req.content.decode('windows-1252')
            break   # <- done! got file.

        except (urllib2.HTTPError, DownloadError):
            retry_left -= 1
            logging.error("Error while downloading ShoppingCar.xml, retrying.")
        except DeadlineExceededError:
            retry_left -= 1
            logging.warning("DeadlineExceededError while downloading ShoppingCar.xml, retrying.")
        except Timeout:
            retry_left -= 1
            logging.warning("Timeout while downloading ShoppingCar.xml, retrying.")

    if retry_left and retry_left < MAX_RETRY:
        logging.info("Downloading ShoppingCar.xml succeeded after %s retries.", MAX_RETRY - retry_left)
    if not retry_left:
        logging.error("Downloading ShoppingCar.xml failed after %s retries.", MAX_RETRY)

    return ET.parse(XML)

def _iter_carDicts_in_xml(self, newOnly=True):

    #fails here >
    tree = self.get_xml()

    for veicolo in tree.getiterator('veicolo'):
        # do stuff

Я получаю сообщение об ошибке:

<type 'exceptions.IOError'>: [Errno 13] Permission denied: u'<?xml version="1.0" encoding="windows-1252"?><veicoli>\r\n    <veicolo>\r\n\t\t<id><![CDATA[26806]]></id>

Эта ошибка продолжает выплевывать XML-файл, поэтому я не буду вставлять все это

Действительно нетКонечно, куда идти, я использовал подобный код для извлечения из XML-файлов и никогда не сталкивался с подобными проблемами.Есть идеи?

Ответы [ 2 ]

1 голос
/ 04 сентября 2011

parse функция ожидает файловый объект.Попробуйте parse(StringIO(XML)) вместо.

0 голосов
/ 04 сентября 2011

Возможно, вам не разрешено использовать эту ссылку (т. Е. Сделать запрос по этой ссылке).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...