Python:想不到呀,跟着书本上一步步操作也会出很多错

B站影视 欧美电影 2025-04-06 23:34 1

摘要:几年前的一本书,最近来跟着学习,目前在第4章:Excel表格自动化。

几年前的一本书,最近来跟着学习,目前在第4章:Excel表格自动化。

结果一两页的内容,就已经出了很多错了。

import xlrd

people = xlrd.open_workbook('people.xlsx') #读取名为people的工作簿

出错了:FileNotFoundError: [Errno 2] No such file or directory: 'people.xlsx'

“没有这样的文件或目录”

好的,我去代码文件夹里新建一个‘people.xlsx’文档

仍然出错:xlrd.biffh.XLRDError: Excel xlsx file; not supported

原因是:xlrd不支持.xlsx文件,只支持.xls文件

解决方法,要么安装旧版本,要么使用xlrd3。

图片来源于网络

图片来源于网络

使用xlrd3,于是先去命令行窗口安装xlrd3:

pip install xlrd3

在VSCode里导入xlrd3

import xlrd3 as xlrd

people = xlrd.open_workbook('people.xlsx')

成功了,继续操作

sheet = people.sheets[0] #选择所有工作表中的第一个

又出错了:TypeError: 'generator' object is not subscriptable

于是换了个:

sheet = people.sheet_by_index(0) #选择所有工作表中的第一个

这个成功了

import xlrd3 as xlrd

people = xlrd.open_workbook('people.xlsx')

sheet = people.sheet_by_index(0)

但是,以下代码也没问题:

import xlrd

people = xlrd.open_workbook('people1.xls')

sheet = people.sheets[0]

继续sheet.cell_value(row, col):

sheet.cell_value(1,0) #获取A2(第2行第1列)

sheet.cell_value(0,1) #获取B1(第1行,第2列)

继续:

sheets_num = book.nsheets

sheets_names = book.sheet_names

nrows = sheet.nrows

ncols = sheet.ncols

又出错了:NameError: name 'book' is not defined

“book”没定义,我还以为book就是专用的词呢,结果不是

看它的代码文件里,也只有这4句,也没定义book的语句,这书真的是:无语

修改下:

sheets_num = people.nsheets #获取工作簿中工作表数目

sheets_names = people.sheet_names #获取工作表中工作表名称列表

nrows = sheet.nrows #获取工作表中有值单元格的行数

ncols = sheet.ncols #获取工作表中有值单元格的列数

好奇怪,我把代码文件关了再重新打开运行时,又出现问题了:

FileNotFoundError: [Errno 2] No such file or directory: 'people1.xls'

为什么呢,这个文件和代码文件就在同一个文件夹里呀,也存在呀?为什么,为什么?

把它的全部路径地址写上就对了,可是代码文件没关闭之间就是正常的呢?为什么代码文件关闭后重新打开运行就要写上绝对路径呢?

来源:教育资讯报导

相关推荐