首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >XLSB到CSV与熊猫,蟒蛇

XLSB到CSV与熊猫,蟒蛇
EN

Stack Overflow用户
提问于 2022-02-04 09:36:30
回答 2查看 157关注 0票数 0

试图将多个XLSB文件转换为CSV。不知道这里有什么问题

代码语言:javascript
复制
import os

import pandas as pd

path = r'C://Users//greencolor//Autoreport//Load_attachments//'
for filename in os.listdir(path):
    if filename.startswith("PB orders"):
        print(filename)                         #until here its working
        month = pd.read_excel(filename, sheet_name="Raw data ", engine="pyxlsb")
        print(month)                            # I get the error here
        month = month[month['Sales Manager'] == 'DEVON, JOHN'] #filtering by manager
        month.to_csv (path + filename + ".csv", index = None, header=True)

错误

FileNotFoundError: Errno 2没有这样的文件或目录:'PB Dec.xlsb'

我为什么会犯这个错误?print(filename)是打印名称以PB orders开头的所有XLSB文件。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-02-04 09:40:53

filename只是文件的名称,而不是完整的路径。您需要将它与path组合起来,以获得文件的完整路径。您可以使用os.path.join以一种安全的方式这样做:

代码语言:javascript
复制
import os
...
for filename in os.listdir(path):
    if filename.startswith("PB orders"):
        full_path = os.path.join(path, filename)
        print(full_path )                         
        month = pd.read_excel(full_path , sheet_name="Raw data ", engine="pyxlsb")

使用模式进行搜索

另一种方法是使用格罗布搜索与模式匹配的文件。您仍然需要生成完整的路径:

代码语言:javascript
复制
import glob

...

for filename in glob.glob("PB orders*.xlsb", root_dir=path):
    full_path = os.path.join(path, filename)
    print(full_path )                         
    month = pd.read_excel(full_path , sheet_name="Raw data ", engine="pyxlsb")

避免临时文件

您仍然需要检查文件名,以避免在某人打开Excel文件(以~开头的文件)时生成的临时文件:

代码语言:javascript
复制
for filename in glob.glob("PB orders*.xlsb", root_dir=path):
    if not os.path.basename(filename).startswith("~"):
        full_path = os.path.join(path, filename)
            print(full_path )                         
            month = pd.read_excel(full_path , sheet_name="Raw data ", engine="pyxlsb")
票数 3
EN

Stack Overflow用户

发布于 2022-02-04 09:40:15

当您执行month = pd.read_excel(filename, sheet_name="Raw data ", engine="pyxlsb")时,请尝试将其替换为以下内容:

month = pd.read_excel(path + filename, sheet_name="Raw data ", engine="pyxlsb")

这将在给定目录中为您的文件名提供路径。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70984147

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档