How to convert a list of numpy files to a list of binary files?
我需要将一个目录中的numpy文件列表转换为另一个目录中具有相同顺序和相同名称的二进制文件列表:唯一需要更改的是文件名的扩展名;例如:
我放置numpy文件的目录:
1 2 3 4 5 6 | Tracenumber=01_Pltx1.npy Tracenumber=02_Pltx2.npy Tracenumber=03_Pltx3.npy Tracenumber=04_Pltx4.npy Tracenumber=05_Pltx5.npy Tracenumber=06_Pltx6.npy |
我放置二进制文件的结果目录:
1 2 3 4 5 6 | Tracenumber=01_Pltx1.bin Tracenumber=02_Pltx2.bin Tracenumber=03_Pltx3.bin Tracenumber=04_Pltx4.bin Tracenumber=05_Pltx5.bin Tracenumber=06_Pltx6.bin |
首先,我用这个代码将一个numpy文件转换成一个二进制文件:
1 2 3 4 5 6 7 8 9 | 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() |
但是现在,我已经尝试过这个代码:
1 2 3 4 5 6 7 8 9 10 11 12 | 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() |
但它没有给我想要的结果。我有这个错误。
file.write(struct.pack(path_for_binary_files,t))。
attributeError:"str"对象没有"write"属性
如果您查看
For each directory in the tree rooted at directory top (including top itself), it yields a 3-tuple (dirpath, dirnames, filenames).
您应该将
1 2 3 4 | ... for root, dirs, files in os.walk(r'C:\\Users\\user\\My_Test_Traces\\1000_Traces_npy'): for file in files: ... |
但是,似乎您只希望解析单个目录中的文件,而使用
1 | files = [f for f in os.listdir('/your/path') if os.path.isfile(f)] |