将文件夹中的文本文件读入martix

2024-09-27 22:21:47 发布

您现在位置:Python中文网/ 问答频道 /正文

我在文件夹中有一些文本文件,我需要将它们全部读取到矩阵中,但当我使用以下代码时:

with open('E:/UGC/Animationpsnr_bitrate_0.txt','r') as file:
    psnr_bitrate = file.readlines()

它生成一个str列表,但我需要将它们保存为浮点变量。在下文中,我给出了文本文件内容的示例:

33.773083 36.171250 38.032833 39.589417 40.937167 42.214250
45.867417 49.271917 51.478500 53.247500 54.981250 56.507333
48.421417 51.848833 54.390500 56.687750 58.457333 60.029583
48.790583 52.691333 55.534750 57.793250 59.953167 61.538500

假设我在一个文件夹中有20个文本文件,其内容如下。最后,我需要读取所有文件并将它们保存在一个有6列的矩阵中,这些行都是文本文件值。你能告诉我怎么做吗


Tags: 代码txt文件夹内容aswith矩阵open
3条回答

您可以拆分每条线并将其转换为浮动,如下所示:

matrix = []
with open('E:/UGC/Animationpsnr_bitrate_0.txt', 'r') as file:
    lines = file.readlines()
    for line in lines:
        matrix.append([float(value) for value in line.strip().split()])

对于多个文件,在顶部再添加一个for循环,读取每个文件并将内容附加到矩阵列表中

我们可以^{}迭代UGC文件夹中文本文件的所有路径名,然后使用^{}可以将txt文件作为numpy数组加载,最后使用^{}垂直堆叠所有数组

import glob

np.vstack([np.loadtxt(path, dtype='float') for path in glob.iglob(r'E:/UGC/*.txt')])

下面的代码将在目录中找到与bitrate*.txt匹配的任何文件。 然后它将遍历每一行,将每一个值转换为一个浮点值,并将其添加到列表data

from pathlib import Path

path = Path(r'C:\YourFolder')
print(path)

data = []

for filepath in path.glob('bitrate*.txt'):
    with open(filepath,'r') as file:
        for line in file:
            data.append([float(x) for x in line.split()])
            
print(data)

此处不需要熊猫/numpy

相关问题 更多 >

    热门问题