python读写文件数据(换行写入以及按行读取;读写字节数据)

  我需要把一个2*50000的数据保存到本地,然后再从其中读取

1.写入数据  acc_array是一个2*50000的二维数组

 f=open('PATH/test.txt','w')
 for j in range(50000):
     f.write(str(acc_array[j][0]))
     f.write('   ')
     f.write(str(acc_array[j][1])+'\n')
 f.close()

这里的换行保存,打开记事本文件的时候发现并没有换行,没关系,以word或者notepad打开都是换行的 而且不影响读取

保存数据截图

python读写文件数据(换行写入以及按行读取;读写字节数据)_第1张图片

2.读取数据,按照行读取

我这里是把每一行的两个数字读取出来,相除后产生一个新数组

import numpy as np
file=open('test.txt','r')
#a=[[0]*2 for i in range(50000)]
a=[]
m=''
n=''
for j in range(50000):
    line=file.readline()
    print(line)
    for i in range(len(line)):
        if line[i]>='0' and line[i]<='9':
           m=m+line[i]
        else:
           break
    for t in range(i,len(line)):
        if line[t]>='0' and line[t]<='9':
            n=n+line[t]
    print(m,'*******',n)
    a.append(float((1.0*int(n))/(1.0*int(m))))
    print(a[j])
    m=''
    n=''
    if not line:
        break

    print(line)

print(np.argsort(a))

3.写入byte数据

我想写入一串字节数据‘0110101101110001010100100’到文件,可以用以下方式(需要import struct)


    savedBinFile = open('/home/ximao/test.bin', "wb");  # open a file, if not exist, create it
    for i in range(len(bt) // 8):
        if bt[8 * i] == '0':
            savedBinFile.write(struct.pack('b', int(bt[i * 8 + 1:(i + 1) * 8], 2)));
        else:
            savedBinFile.write(struct.pack('b', -int(bt[i * 8 + 1:(i + 1) * 8], 2)));
    for i in range(len(wb) // 8):
        if wb[8 * i] == '0':
            savedBinFile.write(struct.pack('b', int(wb[i * 8 + 1:(i + 1) * 8], 2)));
        else:
            savedBinFile.write(struct.pack('b', -int(wb[i * 8 + 1:(i + 1) * 8], 2)));
    savedBinFile.close()
这里每次写入8位bit数据。即一个字节,之所以判断第一位是否为0是因为一个字节能表示的数位[-128,127],第一位是符号为,但是如果我们每次int(bt[i * 8 :(i + 1) * 8], 2)),这样8bit数据表示的整数实际上会超过[-128,127],所以我们取后面七位,然后再在前面加入正负号即可




你可能感兴趣的:(python,python,读写文件数据,写入byte数据)