【问题标题】:ValueError: stat: path too long for Windows on Jupyter Notebook parsing a URL requestValueError: stat: path too long for Windows on Jupyter Notebook 解析 URL 请求
【发布时间】:2020-02-05 11:30:28
【问题描述】:

我正在尝试解析我公司的 Odata 数据,以构建采用 CompanyName 和 LateDays 字段的延迟供应商的比例。

我打开文件并将其转换为字符串,因为我发现了一篇关于如何请求 url 进行身份验证的非常有用的帖子,并且我获得了包含整个报告的字符串文本。该报告是用 ?XML 编写的,我在 Jupyter Notebook 中使用 Python 3.7 来处理它。

我发现另一个帖子使用类方法查询类似于我的 XML 文件,但我的输出是错误 ValueError: stat: path too long for Windows。

我该如何解决这个问题?

谢谢!

import requests
import pandas as pd
import numpy as np
import base64
import urllib.request

request = urllib.request.Request('https://myUrl_OData')
base64string = base64.b64encode(bytes('%s:%s' % ('Myusername', 'Mypassword'),'ascii'))
request.add_header("Authorization", "Basic %s" % base64string.decode('utf-8'))
result = urllib.request.urlopen(request)
resulttext = result.read()

text = resulttext.decode(encoding='utf-8',errors='ignore')

from xml.sax import parse
from xml.sax.handler import ContentHandler

class properties(ContentHandler):
    def __init__(self):
        self.elements = []          # stack of elements
        self.char_data = u''        # string buffer
        self.current_vendor = u'' 
        self.current_latedays = u''

    def startElement(self, name, attrs):
        if companyname == u'CompanyName':
            self.elements.append(u'CompanyName')
        if latedays == u'LateDays':
            self.elements.append(u'LateDays')

    def characters(self, chars):
        if len(self.elements) > 0 and self.elements[-1] in [u'CompanyName', u'LateDays']:
            self.char_data += chars

    def endElement(self, name):
        self.elements.pop() if len(self.elements) > 0 else None

        if companyname == u'CompanyName':
            self.current_vendor = self.char_data
            self.char_data = ''
        if latedays == u'LateDays':
            self.current_latedays = self.char_data
            self.char_data = ''

        if companyname == 'CompanyName':
            if self.current_latedays == u'LateDays':
                print('Found:', self.current_customer)

            # clear the buffers now that is finished
            self.current_year = u''
            self.current_customer = u''
            self.char_data = u''


parse(r"\\\\?\\" + text, properties())

【问题讨论】:

    标签: python xml python-requests


    【解决方案1】:

    您的错误似乎与 XML 解析无关,而是与您的操作系统限制有关。 在基于 Windows 的操作系统上,文件路径的长度不能超过 ~260 个字符 (ref)。

    尝试缩短文件名的长度,或减少指向数据的嵌套文件夹的数量。

    【讨论】:

      猜你喜欢
      • 2014-09-21
      • 2021-01-30
      • 1970-01-01
      • 1970-01-01
      • 2021-08-17
      • 2014-08-09
      • 1970-01-01
      • 2020-12-06
      • 2017-03-19
      相关资源
      最近更新 更多