指向PythonPandas数据框的SharePoint Excel URL-流线型

lx0bsm1f  于 2022-12-09  发布在  Python
关注(0)|答案(1)|浏览(123)

**问题:**上传大文件到Streamlit-〉需要解决文件大小相关问题。
是否有一种方法可以仅从文件SharePoint文件url链接创建Pandasdf?

我解决了它的谷歌驱动器网址链接,但不能弄清楚SharePoint。

**可能的解决方案:**从SharePoint创建一个url链接,并将excel/csv文件作为Pandasdf加载。

import pandas as pd

url = 'google drive url'
path = 'https://drive.google.com/uc?export=download&id='+url.split('/')[-2]
df = pd.read_csv(path)
ioekq8ef

ioekq8ef1#

是的您可以使用https://github.com/vgrem/Office365-REST-Python-Client

download_path = os.path.join(tempfile.mkdtemp(), os.path.basename(FILE_URL))
with open(download_path, "wb") as local_file:
   ctx.web.get_file_by_server_relative_url(FILE_URL).download(local_file).execute_query()

然后读取下载路径
下载pd.read路径
不要删除临时文件!
库是惊人的,你也可以直接读取sharepoint文件在字节Ex:

def read_csv(ctx, relative_url, pandas=False):
    # relative_url = "/sites/myLib/Folder/test.csv" #TEST
    # ctx = auth()
    response = File.open_binary(ctx, relative_url)
    bytes_data = response.content
    try:
        s = str(bytes_data, 'utf8')
    except Exception as e:
        print('utf8 encoding error')
        print(relative_url, e)
        try:
            s = str(bytes_data, 'cp1252')
        except Exception as e:
            print('CRITIAL ERROR cp1252 encoding error')
            print(relative_url, e)
    if pandas == False:
        return s
    else:
        data = StringIO(s)
        return data

我使用了panadas变量bc,最终代码如下所示

df= pd.read_csv(read_csv(ctx=ctx, relative_url=FILE_URL, pandas=True), dtype=str, keep_default_na=False) # read master qrd db

相关问题