如何修复熊猫中的ValueError

时间:2019-05-18 05:19:08

标签: python django pandas

我正在将应用程序从经典的Tkinter GUI迁移到基于Django云的应用程序,并收到

ValueError: Invalid file path or buffer object type: <class 'bool'>

当试图运行一个调用熊猫的函数时。

Exception Location: C:\Users\alfor\AppData\Local\Programs\Python\Python37-32\lib\site-packages\pandas\io\common.py in get_filepath_or_buffer, line 232

我没有做太多尝试,因为在搜索中找不到相同的错误。

我不认为此功能甚至可以全部运行,因为我的媒体文件夹没有获得要保存文件的新目录。.但是我可能错了。

出现问题的函数的开始看起来像这样:

def runpayroll():
    man_name = 'Jessica Jones'

    sar_file = os.path.isfile('media/reports/Stylist_Analysis.xls')
    sar_file2 = os.path.isfile('media/reports/Stylist_Analysis.xls')
    tips_file = os.path.isfile('media/reports/Tips_By_Employee_Report.xls')
    hours_wk1_file = os.path.isfile('media/reports/Employee_Hours1.xls')
    hours_wk2_file = os.path.isfile('media/reports/Employee_Hours2.xls')
    retention_file = os.path.isfile('media/reports/SC_Client_Retention_Report.xls')
    efficiency_file = os.path.isfile('media/reports/Employee_Service_Efficiency.xls')

    df_sar = pd.read_excel(sar_file,
                           sheet_name=0, header=None, skiprows=4)
    df_sar2 = pd.read_excel(sar_file2,
                            sheet_name=0, header=None, skiprows=4)
    df_tips = pd.read_excel(tips_file,
                            sheet_name=0, header=None, skiprows=0)
    df_hours1 = pd.read_excel(hours_wk1_file,
                              header=None, skiprows=5)
    df_hours2 = pd.read_excel(hours_wk2_file,
                              header=None, skiprows=5)
    df_retention = pd.read_excel(retention_file, sheet_name=0,
                                 header=None, skiprows=8)
    df_efficiency = pd.read_excel(efficiency_file, sheet_name=0,
                                  header=None, skiprows=5)

我从此功能的其余部分更改的唯一代码是我假设的代码,因为它只是一个文件位置,所以没关系。

    writer = pd.ExcelWriter('/media/payroll.xlsx', engine='xlsxwriter')

而不是使用我使用的tkinter向用户询问文件保存位置...

    with open(file_path, 'rb') as f:
        response = HttpResponse(f, content_type=guess_type(file_path)[0])
        response['Content-Length'] = len(response.content)
        return response

预期结果是打开一些excel工作表,对数据框做一些工作,然后向用户吐出excel工作表。

1 个答案:

答案 0 :(得分:3)

我相信您需要更改以下文件中的每个文件:

sar_file = os.path.isfile('media/reports/Stylist_Analysis.xls')

收件人:

sar_file = 'media/reports/Stylist_Analysis.xls'

因为os.path.isfile

  

如果path是现有的常规文件,则返回 True 。这遵循符号链接,因此,对于同一路径,islink()和isfile()都可以为true。