如何将numpy文件列表转换为二进制文件列表?

2024-10-08 19:19:55 发布

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

我需要将一个目录中的numpy文件列表转换为另一个目录中的二进制文件列表,并保持相同的顺序和名称:我只需要更改文件名中的扩展名;例如:

我存放numpy文件的目录:

   Tracenumber=01_Pltx1.npy
   Tracenumber=02_Pltx2.npy
   Tracenumber=03_Pltx3.npy
   Tracenumber=04_Pltx4.npy
   Tracenumber=05_Pltx5.npy
   Tracenumber=06_Pltx6.npy

存放二进制文件的结果目录:

^{2}$

首先,我使用此代码将一个numpy文件转换为二进制文件:

import numpy as np
import struct

traces = np.load('C:\\Users\\user\\My_Test_Traces\\1000_Traces_npy\\Tracenumber=01_Pltx1.npy')

f = open('C:\\Users\\user\\My_Test_Traces\\1000_Traces_bin\\Tracenumber=01_Pltx1.bin', 'wb')
for t in traces.flatten():
    f.write(struct.pack('f', t))
f.close()

但现在,我尝试了以下代码:

import os
import numpy as np
import struct
path_For_Binary_Files='C:\\Users\\user\\My_Test_Traces\\1000_Traces_bin'
os.chdir('C:\\Users\\user\\My_Test_Traces\\1000_Traces_npy')
for root, dirs, files in os.walk(r'C:\\Users\\user\\My_Test_Traces\\1000_Traces_npy'):
    for file in files:
       f=open(file,'r')
       trace= np.load(file)
       for t in trace.flatten():
         file.write(struct.pack(path_For_Binary_Files, t))
         file.close() 

但这并没有给我想要的结果。我有这个错误。在

在文件.写入(结构包(二进制文件t的路径)

AttributeError:“str”对象没有属性“write”


Tags: 文件testimportnumpy目录mynp二进制
1条回答
网友
1楼 · 发布于 2024-10-08 19:19:55

如果您查看os.walkdocumentation,您将看到它并不是简单地返回一个文件列表。在

For each directory in the tree rooted at directory top (including top itself), it yields a 3-tuple (dirpath, dirnames, filenames).

您应该将for循环改为:

...
for root, dirs, files in os.walk(r'C:\\Users\\user\\My_Test_Traces\\1000_Traces_npy'):
    for file in files:
        ...

但是,似乎您只想解析单个目录中的文件,而使用os.walk来解析整个目录树。要只获取当前目录中的文件,可以使用os.listdir和{},这是本文question中推荐的

^{pr2}$

相关问题 更多 >

    热门问题