Python 如何将浮点存储到array.array中?
我试图从文件中提取浮点数,并将它们放入数组中。每个浮动都有自己的行。我对Python有点陌生(不是我试图执行的概念),而且它的工作方式与我期望的不太一样Python 如何将浮点存储到array.array中?,python,arrays,python-3.x,floating-point,Python,Arrays,Python 3.x,Floating Point,我试图从文件中提取浮点数,并将它们放入数组中。每个浮动都有自己的行。我对Python有点陌生(不是我试图执行的概念),而且它的工作方式与我期望的不太一样 from array import array def read_file(infilename): infile = open(infilename, 'r') array('f') for line in infile: array.append(line) def main():
from array import array
def read_file(infilename):
infile = open(infilename, 'r')
array('f')
for line in infile:
array.append(line)
def main():
filename = "randFloats.txt"
read_file(filename)
print('Successfully completed placing values in array.')
main()
看起来很直截了当,但当我尝试执行时,会出现以下错误:
Traceback (most recent call last):
File "sortFloat.py", line 14, in <module>
main()
File "sortFloat.py", line 11, in main
read_file(filename)
File "sortFloat.py", line 7, in read_file
array.append(line)
TypeError: descriptor 'append' requires a 'array.array' object but received a 'str'
回溯(最近一次呼叫最后一次):
文件“sortFloat.py”,第14行,在
main()
文件“sortFloat.py”,第11行,在main中
读取文件(文件名)
文件“sortFloat.py”,第7行,在read_文件中
array.append(行)
TypeError:描述符“append”需要“array.array”对象,但收到了“str”
我知道Python将文件的内容视为一个巨大的字符串,并且我已经创建了一个浮点数组,但这甚至不是问题所在。。。它希望我传递一个array.array
对象,而不是普通字符串。如果我将其转换为浮点,则此问题仍然存在
我该如何解决这个问题?在人们提出一个列表之前,是的,我确实需要数组中的数据 首先需要将数组实例化为一个变量,比如说
arr
,然后使用它附加值
def read_file(infilename):
infile = open(infilename, 'r')
arr = array('f')
for line in infile:
arr.append(float(line)) # <-- use the built-in float to convert the str to float
您需要先将数组实例化为一个变量,例如
arr
,然后使用它来附加值
def read_file(infilename):
infile = open(infilename, 'r')
arr = array('f')
for line in infile:
arr.append(float(line)) # <-- use the built-in float to convert the str to float
调用array('f')
将创建一个实例,您需要存储对该实例的引用。另外,去掉每一行的空白,并将其解释为浮点数。完成后关闭文件
from array import array
def read_file(infilename):
infile = open(infilename, 'r')
arr = array('f') #Store the reference to the array
for line in infile:
arr.append(float(line.strip())) #Remove whitespace, cast to float
infile.close()
return arr
def main():
filename = "randFloats.txt"
arr = read_file(filename)
print('Successfully completed placing %d values in array.' % len(arr))
main()
调用array('f')
将创建一个实例,您需要存储对该实例的引用。另外,去掉每一行的空白,并将其解释为浮点数。完成后关闭文件
from array import array
def read_file(infilename):
infile = open(infilename, 'r')
arr = array('f') #Store the reference to the array
for line in infile:
arr.append(float(line.strip())) #Remove whitespace, cast to float
infile.close()
return arr
def main():
filename = "randFloats.txt"
arr = read_file(filename)
print('Successfully completed placing %d values in array.' % len(arr))
main()
好的。。。因此,您需要做的是:
array1 = array('f') # Assign that object to a variable.
后来:
array1.append(line)
您得到的错误是因为您实际上没有创建可访问的变量。因此,当我们调用append方法时,实际上并没有指定要附加到的数组,只指定要添加的字符串。确定。。。因此,您需要做的是:
array1 = array('f') # Assign that object to a variable.
后来:
array1.append(line)
您得到的错误是因为您实际上没有创建可访问的变量。因此,当我们调用append方法时,实际上并没有指定要附加到的数组,只指定要添加的字符串。这将尝试将
str
对象放入数组中,该数组需要浮点值。“那怎么行呢?”埃里克说得对。我错过了那个。修复了它。这将尝试将一个str
对象放入一个数组中,该数组需要一个浮点值。“那怎么行呢?”埃里克说得对。我错过了那个。修复了它。回答得很好,但是f.read()
需要将整个文件读入内存,然后拆分为字符串数组。对于小文件,这是有效的。如果文件较大,则最好遍历该文件。答案很好,但f.read()
要求将整个文件读入内存,然后拆分为字符串数组。对于小文件,这是有效的。如果文件较大,则最好遍历该文件。