我需要将一个目录中的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”
如果您查看
os.walk
的documentation,您将看到它并不是简单地返回一个文件列表。在您应该将
for
循环改为:但是,似乎您只想解析单个目录中的文件,而使用},这是本文question中推荐的
^{pr2}$os.walk
来解析整个目录树。要只获取当前目录中的文件,可以使用os.listdir
和{相关问题 更多 >
编程相关推荐