gpt4 book ai didi

python - 为什么变量有效,但在 python 中使用 xlrd 打开工作簿的列表却无效?

转载 作者:行者123 更新时间:2023-11-28 18:00:12 27 4
gpt4 key购买 nike

我对 python 非常陌生,所以非常感谢任何帮助。在过去的 4 天里,我一直在从我能想象到的各个角度来解决这个问题,希望我能自己解决这个问题,但我被难住了。

我正在尝试从扩展名为 .xlsx 的特定目录创建文件列表。然后我想从列表中获取这些文件名并运行一些函数,将发现的文件名传递给函数,并用每个文件名对其进行迭代。我尝试以多种方式执行此操作,但出于某种原因我不接受文件名。

import os
import xlrd

mypath = "some path to files"
fileslist = []

def find_files():
for file in os.listdir(mypath):
if file.endswith(".xlsx")
fileslist.append(file)

def other_function():
book = xlrd.open_workbook(fileslist)

我可以打印文件列表并显示其中填充了正确的信息。我在脚本的主要部分和 other_function() 区域内都完成了此操作。我还尝试测试用目录中的有效文件名命名一个变量文件列表,比方说“file1.xlsx”并且可行。一旦我将它输入到列表中,即使列表中的唯一条目是“file1.xlsx”,我也会收到以下错误

book = xlrd.open_workbook(fileslist)
File "/Library/Python/2.7/site-packages/xlrd/__init__.py", line 110, in open_workbook
filename = os.path.expanduser(filename)
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/posixpath.py", line 254, in expanduser
if not path.startswith('~'):
AttributeError: 'list' object has no attribute 'startswith'

最佳答案

xlrd 正在寻找要打开的文件路径。 (文件)列表是 1) 不是文件路径,而是多个文件路径和 2) 不是字符串,这是您遇到的特定错误。一个字符串(它是一个 Python 对象)有一个方法 .startswith 允许 xlrd 检查文件路径的第一部分(你应该给 open_workbook) 是否为 ~。 xlrd 可能这样做是因为这会影响它查找文件的位置。

xlrd.open_workbook 实质上是在尝试双击您发送的文件路径,您(实质上)是在尝试同时单击列表中的所有文件,这可能是如果您可以拥有 X 个不同的电脑鼠标,每只鼠标都有一只手,那是可能的,但按照通常的电脑制造方式,这实际上是不可能的。

如果你想为你拥有的不同工作簿制作一个字典,但是用 xlrd 打开你可以使用这个:

xlrd_wbs = dict()
for my_file in filelist:
xlrd_wbs[my_file] = xlrd.open_workbook(my_file)

然后访问不同的文件:

xlrd_wbs[whatever_file_path_you_used]

我会在这里使用字典,因为它允许您更可靠地访问您想要的文件,如果您只想要一个列表,您可以这样做:

xlrd_wbs = []
for my_file in filelist:
xlrd_wbs.append(xlrd.open_workbook(my_file))

关于python - 为什么变量有效,但在 python 中使用 xlrd 打开工作簿的列表却无效?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56085081/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com