【发布时间】:2016-09-24 19:59:29
【问题描述】:
有没有办法使用glob 扩展一个数组,该数组在for-loop 和with 命令组合的每次迭代中存储来自文件的数据。目前,我有类似的东西
import glob
from myfnc import func
for filename in glob.glob('*.dta'):
with open(filename,'rb') as thefile:
fileHead, data = func(thefile)
其中func 在另一个脚本myfnc 中定义。这样做是在目录中的每次迭代中,将来自每个文件的数据存储在 fileHead 和 data(作为数组)中,擦除前一次迭代中的任何内容。我需要的是在每次传递时扩展每个数组的东西。有没有很好的方法来做到这一点?它不需要是带有组合的 for 循环。这就是我从目录中读取所有文件的方式。
我想事先初始化数组,然后在一次完成with 之后尝试扩展它们,但它给了我extend 命令的某种错误。出现错误后,代码如下所示
import glob
from myfnc import func
fileHead, data = [0]*2
for filename in glob.glob('*.dta'):
with open(filename,'rb') as thefile:
fileHeadExtend, dataExtend = func(thefile)
fileHead.extend(fileHeadExtend)
data.extend(dataExtend)
所以,它的问题是 fileHead 和 data 都被初始化但作为 int 的。但是,我不想将数组初始化为这么多的零。一开始不应该有任何任意值。所以,这就是问题所在。
【问题讨论】:
-
将 Python 错误消息添加到您的问题中。
-
AttributeError: 'int' object has no attribute 'extend' -
现在你需要弄清楚哪个变量是
int。 -
在问题中发布整个错误消息,同时添加回溯!
-
虽然看起来有点明显...
fileHead, data = [0]*2将fileHead和data都设置为整数0,然后您尝试扩展它们...它们都是0,你怎么扩展0?!?
标签: arrays file python-3.x glob with-statement