Python / Excel – IOError:没有这样的文件或目录:

尝试从文件中提取.xlsx文档并将数据编译为单个工作表。

接收IOError,尽pipe文件存在

scheme如下

#-------------- loop that pulls in files from folder-------------- import os #create directory from which to pull the files rootdir = r'C:\Users\username\Desktop\Mults' for subdir, dir, files in os.walk(rootdir): for file in files: print os.path.join(subdir,file) #----------------------merge work books----------------------- import xlrd import xlsxwriter wb = xlsxwriter.Workbook('merged.xls') ws = wb.add_worksheet() for file in files: r = xlrd.open_workbook(file) head, tail = os.path.split(file) count = 0 for sheet in r: if sheet.number_of_rows()>0: count += 1 for sheet in r: if sheet.number_of_rosw()>0: if count == 1: sheet_name = tail else: sheet_name = "%s_%s" (tail, sheet.name) new_sheet = wb.create_sheet(sheet_name) new_sheet.write_reader(sheet) new_sheet.close() wb.close() 

返回错误如下

 doc1.xlsx doc2.xlsx doc3.xlsx doc4.xlsx Traceback (most recent call last): File "C:\Users\username\Desktop\Work\Python\excel practice\xlsx - loops files - 09204.py", line 23, in <module> r = xlrd.open_workbook(file) File "C:\Python27\lib\site-packages\xlrd\__init__.py", line 394, in open_workbook f = open(filename, "rb") IOError: [Errno 2] No such file or directory: 'doc1.xlsx' 

任何build议或更改?

另外,如果我正朝着正确的方向提出任何build议?

我是新来的Python世界,所以任何意见将不胜感激!

谢谢!!

您正在打开没有path的纯文件名; 你忽略了目录组件。

不要只打印os.path.join()结果,实际使用它:

 filename = os.path.join(subdir, file) r = xlrd.open_workbook(filename) 

对于第一个问题…

代替:

 r = xlrd.open_workbook(file) 

使用:

 r = xlrd.open_workbook(os.path.join(subdir,file)) 

对于TypeError:而不是:

 for sheet in r: if sheet.number_of_rows()>0: count += 1 

使用:

 for nsheet in r.sheet_names() #you need a list of sheet names to loop throug sheet = r.sheet_by_name(nsheet) #then you create a sheet object with each name in the list if sheet.nrows>0: #use the property nrows of the sheet object to count the number of rows count += 1 

为第二个循环做同样的事情。