Python 如何将浮点存储到array.array中?

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():

我试图从文件中提取浮点数,并将它们放入数组中。每个浮动都有自己的行。我对Python有点陌生(不是我试图执行的概念),而且它的工作方式与我期望的不太一样

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()
要求将整个文件读入内存,然后拆分为字符串数组。对于小文件,这是有效的。如果文件较大,则最好遍历该文件。