蟒蛇/ Excel中 - IO错误:[错误2]没有这样的文件或目录:(Python/Excel -

2019-10-21 01:56发布

试图提取的.xlsx从文件文档和数据汇编成一个单一的工作表。

尽管存在的文件接收的IOError

程序如下

#-------------- 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'

任何建议或变化?

此外,任何意见,如果我在朝着正确的方向?

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

谢谢!!

Answer 1:

你是不带路径打开普通文件名; 你忽略目录组件。

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

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


Answer 2:

对于第一个问题...

代替:

r = xlrd.open_workbook(file)

采用:

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

对于类型错误:不是的:

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

执行相同的第二个for循环。



文章来源: Python/Excel - IOError: [Errno 2] No such file or directory: