我正在尝试使用sheet1和sheet2附加许多excel文件。 我写了以下代码
import os
import pandas as pd
files = os.listdir("C:/Python27/files")
files
df = pd.DataFrame()
for f in files:
data = pd.read_excel(f, 'Sheet1', 'Sheet2')
df = df.append(data)
文件的示例名称:2014年4月总计,2014年8月总计
以下是错误:
Traceback (most recent call last):
File "C:/Python27/filemerge2.py", line 10, in <module>
data = pd.read_excel(f, 'Sheet1', 'Sheet2')
File "C:\Python27\lib\site-packages\pandas\io\excel.py", line 170, in read_excel
io = ExcelFile(io, engine=engine)
File "C:\Python27\lib\site-packages\pandas\io\excel.py", line 227, in __init__
self.book = xlrd.open_workbook(io)
File "C:\Python27\lib\site-packages\xlrd\__init__.py", line 395, in open_workbook
with open(filename, "rb") as f:
IOError: [Errno 2] No such file or directory: 'Total Apr 2014.xls'
如果有人可以帮我解决这个错误,那就太好了
答案 0 :(得分:0)
Python os.listdir
将返回一个列表,其中包含给定目录中文件的相对名称。如果从"C:/Python27/files"
以外的文件夹(或xls文件所在的任何文件夹)运行脚本,则需要为read_excel()
函数提供所需文件的完整路径(或你调用的文件管理功能。)
要使您的脚本正常工作,只需将基本文件夹附加到文件名,它应该可以工作:
import os
import pandas as pd
folder = "C:/Python27/files"
files = os.listdir(folder)
files
df = pd.DataFrame()
for f in files:
data = pd.read_excel(folder + '/' + f, 'Sheet1', 'Sheet2')
df = df.append(data)
请注意,os.listdir
将返回folder
内的所有文件和目录,无论其类型如何。确保在尝试使用read_excel()
打开它之前执行某些文件类型检查(或者只是在依赖于此调用的for循环内容周围使用try-except
块。)