Python 从csv转换blob,作为字符串导入
我正在尝试读取存储在csv文件中的Blob数据。我可以以字符串格式导入它,但是如果我想将numpy.frombuffer与dtype='一起使用,则显示错误的代码块实际上并不显示异常,仅显示位置,是否可以包含此部分?此外,该文件摘录看起来不像csv文件,这确实是您要查找的类型,还是您刚刚将其放入电子表格中?@CmdCoder858舒尔,抱歉:第52行,在data=np.frombuffer中(blob_data,dtype=)我没有找到太多关于缓冲区编码的信息,但我认为最有可能的原因是数据损坏或数据类型无效。我建议确保数据完整,并可能尝试使用不同的数据类型,而不是“@CmdCoder858”。数据完整。我尝试使用二进制“b”,但整数是不完整的太小了。困难在于如果我使用read_CSV的输出,它看起来像b'\xfb\xc3a?\但我不能在np.frombuffer函数中使用它。如果我通过bytes()转换它看起来像是b'b'\\xfb\\…所以每个\都是加倍的。但是我不知道如何告诉python read_CSV的输出是类型字节而不是字符串。你知道我的意思吗?如果函数需要字符串,那么这可能就是你应该给它的。你正在将blob_数据转换为字节。如果你把它保留为字符串,它可能会工作吗?Python 从csv转换blob,作为字符串导入,python,csv,import,runtime-error,blob,Python,Csv,Import,Runtime Error,Blob,我正在尝试读取存储在csv文件中的Blob数据。我可以以字符串格式导入它,但是如果我想将numpy.frombuffer与dtype='一起使用,则显示错误的代码块实际上并不显示异常,仅显示位置,是否可以包含此部分?此外,该文件摘录看起来不像csv文件,这确实是您要查找的类型,还是您刚刚将其放入电子表格中?@CmdCoder858舒尔,抱歉:第52行,在data=np.frombuffer中(blob_data,dtype=)我没有找到太多关于缓冲区编码的信息,但我认为最有可能的原因是数据损坏或
line 52, in <module>
data = np.frombuffer(blob_data, dtype='<f4') #<f4
ValueError: buffer size must be a multiple of element size
import numpy as np
import datetime
import math
import csv
import pandas
from binascii import unhexlify
#import mysql.connector
# from pylab import figure, plot, show, legend, xlabel, ylabel
from matplotlib import pyplot as plt
def read_CSV(dataid):
with open('spectrometer2.csv') as csv_file:
csv_reader = csv.reader(csv_file, delimiter=',')
line_count = 0
result = bytes('1',encoding='UTF-8')
for row in csv_reader:
if line_count > 0:
#print(row[0])
if str(dataid) == str(row[0]):
result = row[3][2:-1]
print('FOUND####################################')
print(str(row[3])[2:-1])
break
line_count += 1
print(str(type(result)))
return result
####### MAIN PROGRAM #######
#spectrumRange = np.arange(10, 11011, 200)
spectrumRange = np.arange(8000, 9000, 200) # Auszug zur Leistungsoptimierung im Test
query_init = "SELECT * FROM `spectrometer2` WHERE data_id="
plt.figure()
for spectrum_id in spectrumRange:
spectrometerquery = query_init + str(spectrum_id) + ";"
print("Current data ID: " + str(spectrum_id))
#y_stream = interact_with_MySQL("database_name", spectrometerquery)
blob_data = read_CSV(spectrum_id)
#print(binary2int(blob_data))
if(blob_data != 0):
blob_data = bytes(blob_data,encoding = 'UTF-8')
print(blob_data)
data = np.frombuffer(blob_data, dtype='<f4') #<f4
print(data)
plt.plot(data)
plt.title('Spectrometer 2 data')
legend = []
for x in spectrumRange:
legend.append(('data id:', x))
plt.legend(legend)
plt.show()