显示xlrd、python正在处理的文件名。图书类没有filename属性

显示xlrd、python正在处理的文件名。图书类没有filename属性,python,filenames,xlrd,Python,Filenames,Xlrd,我正在尝试做一些我觉得应该非常直截了当的事情,但似乎不作为xlrd Book类的属性存在 在解析目录中的所有xlsx文件时,我想记录哪个文件中存在哪些错误。为此,我需要打印正在处理的文件名 目标:打印xlrd正在处理的文件的名称。ie:下面示例中的“filename.xlsx” 示例代码: Wb = xlrd.open_workbook ( "./data/excel_files/filename.xlsx" ) print "File being processed is: %s" % Wb.

我正在尝试做一些我觉得应该非常直截了当的事情,但似乎不作为xlrd Book类的属性存在

在解析目录中的所有xlsx文件时,我想记录哪个文件中存在哪些错误。为此,我需要打印正在处理的文件名

目标:打印xlrd正在处理的文件的名称。ie:下面示例中的“filename.xlsx”

示例代码:

Wb = xlrd.open_workbook ( "./data/excel_files/filename.xlsx" )
print "File being processed is: %s" % Wb.name_obj_list[0].name
这将输出“\u xlnm.\u FilterDatabase”。我想打印“filename.xlsx”。Book类的文档并没有简单的方法来实现这一点


有什么建议吗?

试试简单的方法:

for filename in glob('*.xls*'):
    try:
       wb = xlrd.open_workbook(filename)
    except xlrd.XLRDERROR:
       print 'Problem processing {}'.format(filename)

我只是从另一个类传递了带有Wb对象的文件名并打印了它

问题是对象Wb被传递到excel解析文件中。我想我也可以传递文件名,但我认为可能有一种方法可以从Wb对象中提取文件名。工作簿对象本身没有任何东西可以指示它所在的文件。您可以通过获取任何Excel文件并使用不同的名称复制它来亲自看到这一点。这两个文件完全相同,但名称不同。因此,即使原始工作簿以某种方式将其文件名存储在其中的某个位置,副本本身也会存储错误的名称。另外,
open\u工作簿
方法可以接受原始文件内容形式的输入(作为bytestring),在这种情况下,将没有名称、句点。